{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# H2O Tutorial\n",
    "\n",
    "Author: Spencer Aiello\n",
    "\n",
    "Contact: spencer@h2oai.com\n",
    "\n",
    "This tutorial steps through a quick introduction to H2O's Python API. The goal of this tutorial is to introduce through a complete example H2O's capabilities from Python. Also, to help those that are accustomed to Scikit Learn and Pandas, the demo will be specific call outs for differences between H2O and those packages; this is intended to help anyone that needs to do machine learning on really Big Data make the transition. It is not meant to be a tutorial on machine learning or algorithms.\n",
    "\n",
    "Detailed documentation about H2O's and the Python API is available at http://docs.h2o.ai."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Setting up your system for this demo"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following code creates two csv files using data from the [Boston Housing dataset](https://archive.ics.uci.edu/ml/datasets/Housing) which is built into scikit-learn and adds them to the local directory"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "No instance found at ip and port: localhost:54321. Trying to start local jar...\n",
      "\n",
      "\n",
      "JVM stdout: /var/folders/2j/jg4sl53d5q53tc2_nzm9fz5h0000gn/T/tmpGp_6cd/h2o_me_started_from_python.out\n",
      "JVM stderr: /var/folders/2j/jg4sl53d5q53tc2_nzm9fz5h0000gn/T/tmpCRsAhn/h2o_me_started_from_python.err\n",
      "Using ice_root: /var/folders/2j/jg4sl53d5q53tc2_nzm9fz5h0000gn/T/tmpnsOsd7\n",
      "\n",
      "\n",
      "Java Version: java version \"1.8.0_45\"\n",
      "Java(TM) SE Runtime Environment (build 1.8.0_45-b14)\n",
      "Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)\n",
      "\n",
      "\n",
      "Starting H2O JVM and connecting: .......... Connection successful!\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td>H2O cluster uptime: </td>\n",
       "<td>958 milliseconds </td></tr>\n",
       "<tr><td>H2O cluster version: </td>\n",
       "<td>3.7.0.99999</td></tr>\n",
       "<tr><td>H2O cluster name: </td>\n",
       "<td>H2O_started_from_python</td></tr>\n",
       "<tr><td>H2O cluster total nodes: </td>\n",
       "<td>1</td></tr>\n",
       "<tr><td>H2O cluster total memory: </td>\n",
       "<td>3.56 GB</td></tr>\n",
       "<tr><td>H2O cluster total cores: </td>\n",
       "<td>8</td></tr>\n",
       "<tr><td>H2O cluster allowed cores: </td>\n",
       "<td>8</td></tr>\n",
       "<tr><td>H2O cluster healthy: </td>\n",
       "<td>True</td></tr>\n",
       "<tr><td>H2O Connection ip: </td>\n",
       "<td>127.0.0.1</td></tr>\n",
       "<tr><td>H2O Connection port: </td>\n",
       "<td>54321</td></tr></table></div>"
      ],
      "text/plain": [
       "--------------------------  -----------------------\n",
       "H2O cluster uptime:         958 milliseconds\n",
       "H2O cluster version:        3.7.0.99999\n",
       "H2O cluster name:           H2O_started_from_python\n",
       "H2O cluster total nodes:    1\n",
       "H2O cluster total memory:   3.56 GB\n",
       "H2O cluster total cores:    8\n",
       "H2O cluster allowed cores:  8\n",
       "H2O cluster healthy:        True\n",
       "H2O Connection ip:          127.0.0.1\n",
       "H2O Connection port:        54321\n",
       "--------------------------  -----------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy\n",
    "from numpy.random import choice\n",
    "from sklearn.datasets import load_boston\n",
    "from h2o.estimators.random_forest import H2ORandomForestEstimator\n",
    "\n",
    "\n",
    "import h2o\n",
    "h2o.init()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Parse Progress: [##################################################] 100%\n"
     ]
    }
   ],
   "source": [
    "# transfer the boston data from pandas to H2O\n",
    "boston_data = load_boston()\n",
    "X = pd.DataFrame(data=boston_data.data, columns=boston_data.feature_names)\n",
    "X[\"Median_value\"] = boston_data.target\n",
    "X = h2o.H2OFrame.from_python(X.to_dict(\"list\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Export File Progress: [##################################################] 100%\n",
      "\n",
      "Export File Progress: [##################################################] 100%\n"
     ]
    }
   ],
   "source": [
    "# select 10% for valdation\n",
    "r = X.runif(seed=123456789)\n",
    "train = X[r < 0.9,:]\n",
    "valid = X[r >= 0.9,:]\n",
    "\n",
    "h2o.export_file(train, \"Boston_housing_train.csv\", force=True)\n",
    "h2o.export_file(valid, \"Boston_housing_test.csv\", force=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Enable inline plotting in the Jupyter Notebook"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Intro to H2O Data Munging"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Read csv data into H2O. This loads the data into the H2O column compressed, in-memory, key-value store."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Parse Progress: [##################################################] 100%\n"
     ]
    }
   ],
   "source": [
    "fr = h2o.import_file(\"Boston_housing_train.csv\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "View the top of the H2O frame."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<tr><th style=\"text-align: right;\">   CRIM</th><th style=\"text-align: right;\">  ZN</th><th style=\"text-align: right;\">     B</th><th style=\"text-align: right;\">  LSTAT</th><th style=\"text-align: right;\">  Median_value</th><th style=\"text-align: right;\">  AGE</th><th style=\"text-align: right;\">  TAX</th><th style=\"text-align: right;\">  RAD</th><th style=\"text-align: right;\">  CHAS</th><th style=\"text-align: right;\">  NOX</th><th style=\"text-align: right;\">   RM</th><th style=\"text-align: right;\">  INDUS</th><th style=\"text-align: right;\">  PTRATIO</th><th style=\"text-align: right;\">   DIS</th></tr>\n",
       "<tr><td style=\"text-align: right;\">0.00632</td><td style=\"text-align: right;\">18  </td><td style=\"text-align: right;\">396.9 </td><td style=\"text-align: right;\">   4.98</td><td style=\"text-align: right;\">          24  </td><td style=\"text-align: right;\"> 65.2</td><td style=\"text-align: right;\">  296</td><td style=\"text-align: right;\">    1</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.538</td><td style=\"text-align: right;\">6.575</td><td style=\"text-align: right;\">   2.31</td><td style=\"text-align: right;\">     15.3</td><td style=\"text-align: right;\">4.09  </td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.02729</td><td style=\"text-align: right;\"> 0  </td><td style=\"text-align: right;\">392.83</td><td style=\"text-align: right;\">   4.03</td><td style=\"text-align: right;\">          34.7</td><td style=\"text-align: right;\"> 61.1</td><td style=\"text-align: right;\">  242</td><td style=\"text-align: right;\">    2</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.469</td><td style=\"text-align: right;\">7.185</td><td style=\"text-align: right;\">   7.07</td><td style=\"text-align: right;\">     17.8</td><td style=\"text-align: right;\">4.9671</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.03237</td><td style=\"text-align: right;\"> 0  </td><td style=\"text-align: right;\">394.63</td><td style=\"text-align: right;\">   2.94</td><td style=\"text-align: right;\">          33.4</td><td style=\"text-align: right;\"> 45.8</td><td style=\"text-align: right;\">  222</td><td style=\"text-align: right;\">    3</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.458</td><td style=\"text-align: right;\">6.998</td><td style=\"text-align: right;\">   2.18</td><td style=\"text-align: right;\">     18.7</td><td style=\"text-align: right;\">6.0622</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.06905</td><td style=\"text-align: right;\"> 0  </td><td style=\"text-align: right;\">396.9 </td><td style=\"text-align: right;\">   5.33</td><td style=\"text-align: right;\">          36.2</td><td style=\"text-align: right;\"> 54.2</td><td style=\"text-align: right;\">  222</td><td style=\"text-align: right;\">    3</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.458</td><td style=\"text-align: right;\">7.147</td><td style=\"text-align: right;\">   2.18</td><td style=\"text-align: right;\">     18.7</td><td style=\"text-align: right;\">6.0622</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.02985</td><td style=\"text-align: right;\"> 0  </td><td style=\"text-align: right;\">394.12</td><td style=\"text-align: right;\">   5.21</td><td style=\"text-align: right;\">          28.7</td><td style=\"text-align: right;\"> 58.7</td><td style=\"text-align: right;\">  222</td><td style=\"text-align: right;\">    3</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.458</td><td style=\"text-align: right;\">6.43 </td><td style=\"text-align: right;\">   2.18</td><td style=\"text-align: right;\">     18.7</td><td style=\"text-align: right;\">6.0622</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.08829</td><td style=\"text-align: right;\">12.5</td><td style=\"text-align: right;\">395.6 </td><td style=\"text-align: right;\">  12.43</td><td style=\"text-align: right;\">          22.9</td><td style=\"text-align: right;\"> 66.6</td><td style=\"text-align: right;\">  311</td><td style=\"text-align: right;\">    5</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.524</td><td style=\"text-align: right;\">6.012</td><td style=\"text-align: right;\">   7.87</td><td style=\"text-align: right;\">     15.2</td><td style=\"text-align: right;\">5.5605</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.14455</td><td style=\"text-align: right;\">12.5</td><td style=\"text-align: right;\">396.9 </td><td style=\"text-align: right;\">  19.15</td><td style=\"text-align: right;\">          27.1</td><td style=\"text-align: right;\"> 96.1</td><td style=\"text-align: right;\">  311</td><td style=\"text-align: right;\">    5</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.524</td><td style=\"text-align: right;\">6.172</td><td style=\"text-align: right;\">   7.87</td><td style=\"text-align: right;\">     15.2</td><td style=\"text-align: right;\">5.9505</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.21124</td><td style=\"text-align: right;\">12.5</td><td style=\"text-align: right;\">386.63</td><td style=\"text-align: right;\">  29.93</td><td style=\"text-align: right;\">          16.5</td><td style=\"text-align: right;\">100  </td><td style=\"text-align: right;\">  311</td><td style=\"text-align: right;\">    5</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.524</td><td style=\"text-align: right;\">5.631</td><td style=\"text-align: right;\">   7.87</td><td style=\"text-align: right;\">     15.2</td><td style=\"text-align: right;\">6.0821</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.17004</td><td style=\"text-align: right;\">12.5</td><td style=\"text-align: right;\">386.71</td><td style=\"text-align: right;\">  17.1 </td><td style=\"text-align: right;\">          18.9</td><td style=\"text-align: right;\"> 85.9</td><td style=\"text-align: right;\">  311</td><td style=\"text-align: right;\">    5</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.524</td><td style=\"text-align: right;\">6.004</td><td style=\"text-align: right;\">   7.87</td><td style=\"text-align: right;\">     15.2</td><td style=\"text-align: right;\">6.5921</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.22489</td><td style=\"text-align: right;\">12.5</td><td style=\"text-align: right;\">392.52</td><td style=\"text-align: right;\">  20.45</td><td style=\"text-align: right;\">          15  </td><td style=\"text-align: right;\"> 94.3</td><td style=\"text-align: right;\">  311</td><td style=\"text-align: right;\">    5</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.524</td><td style=\"text-align: right;\">6.377</td><td style=\"text-align: right;\">   7.87</td><td style=\"text-align: right;\">     15.2</td><td style=\"text-align: right;\">6.3467</td></tr>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": []
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fr.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "View the bottom of the H2O Frame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<tr><th style=\"text-align: right;\">   CRIM</th><th style=\"text-align: right;\">  ZN</th><th style=\"text-align: right;\">     B</th><th style=\"text-align: right;\">  LSTAT</th><th style=\"text-align: right;\">  Median_value</th><th style=\"text-align: right;\">  AGE</th><th style=\"text-align: right;\">  TAX</th><th style=\"text-align: right;\">  RAD</th><th style=\"text-align: right;\">  CHAS</th><th style=\"text-align: right;\">  NOX</th><th style=\"text-align: right;\">   RM</th><th style=\"text-align: right;\">  INDUS</th><th style=\"text-align: right;\">  PTRATIO</th><th style=\"text-align: right;\">   DIS</th></tr>\n",
       "<tr><td style=\"text-align: right;\">0.2896 </td><td style=\"text-align: right;\">   0</td><td style=\"text-align: right;\">396.9 </td><td style=\"text-align: right;\">  21.14</td><td style=\"text-align: right;\">          19.7</td><td style=\"text-align: right;\"> 72.9</td><td style=\"text-align: right;\">  391</td><td style=\"text-align: right;\">    6</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.585</td><td style=\"text-align: right;\">5.39 </td><td style=\"text-align: right;\">   9.69</td><td style=\"text-align: right;\">     19.2</td><td style=\"text-align: right;\">2.7986</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.26838</td><td style=\"text-align: right;\">   0</td><td style=\"text-align: right;\">396.9 </td><td style=\"text-align: right;\">  14.1 </td><td style=\"text-align: right;\">          18.3</td><td style=\"text-align: right;\"> 70.6</td><td style=\"text-align: right;\">  391</td><td style=\"text-align: right;\">    6</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.585</td><td style=\"text-align: right;\">5.794</td><td style=\"text-align: right;\">   9.69</td><td style=\"text-align: right;\">     19.2</td><td style=\"text-align: right;\">2.8927</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.23912</td><td style=\"text-align: right;\">   0</td><td style=\"text-align: right;\">396.9 </td><td style=\"text-align: right;\">  12.92</td><td style=\"text-align: right;\">          21.2</td><td style=\"text-align: right;\"> 65.3</td><td style=\"text-align: right;\">  391</td><td style=\"text-align: right;\">    6</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.585</td><td style=\"text-align: right;\">6.019</td><td style=\"text-align: right;\">   9.69</td><td style=\"text-align: right;\">     19.2</td><td style=\"text-align: right;\">2.4091</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.17783</td><td style=\"text-align: right;\">   0</td><td style=\"text-align: right;\">395.77</td><td style=\"text-align: right;\">  15.1 </td><td style=\"text-align: right;\">          17.5</td><td style=\"text-align: right;\"> 73.5</td><td style=\"text-align: right;\">  391</td><td style=\"text-align: right;\">    6</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.585</td><td style=\"text-align: right;\">5.569</td><td style=\"text-align: right;\">   9.69</td><td style=\"text-align: right;\">     19.2</td><td style=\"text-align: right;\">2.3999</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.22438</td><td style=\"text-align: right;\">   0</td><td style=\"text-align: right;\">396.9 </td><td style=\"text-align: right;\">  14.33</td><td style=\"text-align: right;\">          16.8</td><td style=\"text-align: right;\"> 79.7</td><td style=\"text-align: right;\">  391</td><td style=\"text-align: right;\">    6</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.585</td><td style=\"text-align: right;\">6.027</td><td style=\"text-align: right;\">   9.69</td><td style=\"text-align: right;\">     19.2</td><td style=\"text-align: right;\">2.4982</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.06263</td><td style=\"text-align: right;\">   0</td><td style=\"text-align: right;\">391.99</td><td style=\"text-align: right;\">   9.67</td><td style=\"text-align: right;\">          22.4</td><td style=\"text-align: right;\"> 69.1</td><td style=\"text-align: right;\">  273</td><td style=\"text-align: right;\">    1</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.573</td><td style=\"text-align: right;\">6.593</td><td style=\"text-align: right;\">  11.93</td><td style=\"text-align: right;\">     21  </td><td style=\"text-align: right;\">2.4786</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.04527</td><td style=\"text-align: right;\">   0</td><td style=\"text-align: right;\">396.9 </td><td style=\"text-align: right;\">   9.08</td><td style=\"text-align: right;\">          20.6</td><td style=\"text-align: right;\"> 76.7</td><td style=\"text-align: right;\">  273</td><td style=\"text-align: right;\">    1</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.573</td><td style=\"text-align: right;\">6.12 </td><td style=\"text-align: right;\">  11.93</td><td style=\"text-align: right;\">     21  </td><td style=\"text-align: right;\">2.2875</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.06076</td><td style=\"text-align: right;\">   0</td><td style=\"text-align: right;\">396.9 </td><td style=\"text-align: right;\">   5.64</td><td style=\"text-align: right;\">          23.9</td><td style=\"text-align: right;\"> 91  </td><td style=\"text-align: right;\">  273</td><td style=\"text-align: right;\">    1</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.573</td><td style=\"text-align: right;\">6.976</td><td style=\"text-align: right;\">  11.93</td><td style=\"text-align: right;\">     21  </td><td style=\"text-align: right;\">2.1675</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.10959</td><td style=\"text-align: right;\">   0</td><td style=\"text-align: right;\">393.45</td><td style=\"text-align: right;\">   6.48</td><td style=\"text-align: right;\">          22  </td><td style=\"text-align: right;\"> 89.3</td><td style=\"text-align: right;\">  273</td><td style=\"text-align: right;\">    1</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.573</td><td style=\"text-align: right;\">6.794</td><td style=\"text-align: right;\">  11.93</td><td style=\"text-align: right;\">     21  </td><td style=\"text-align: right;\">2.3889</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.04741</td><td style=\"text-align: right;\">   0</td><td style=\"text-align: right;\">396.9 </td><td style=\"text-align: right;\">   7.88</td><td style=\"text-align: right;\">          11.9</td><td style=\"text-align: right;\"> 80.8</td><td style=\"text-align: right;\">  273</td><td style=\"text-align: right;\">    1</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.573</td><td style=\"text-align: right;\">6.03 </td><td style=\"text-align: right;\">  11.93</td><td style=\"text-align: right;\">     21  </td><td style=\"text-align: right;\">2.505 </td></tr>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": []
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fr.tail()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Select a column\n",
    "\n",
    "fr[\"VAR_NAME\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<tr><th style=\"text-align: right;\">   CRIM</th></tr>\n",
       "<tr><td style=\"text-align: right;\">0.00632</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.02729</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.03237</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.06905</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.02985</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.08829</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.14455</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.21124</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.17004</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.22489</td></tr>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": []
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fr[\"CRIM\"].head() # Tab completes"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Select a few columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<tr><th style=\"text-align: right;\">   CRIM</th><th style=\"text-align: right;\">   RM</th><th style=\"text-align: right;\">  RAD</th></tr>\n",
       "<tr><td style=\"text-align: right;\">0.00632</td><td style=\"text-align: right;\">6.575</td><td style=\"text-align: right;\">    1</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.02729</td><td style=\"text-align: right;\">7.185</td><td style=\"text-align: right;\">    2</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.03237</td><td style=\"text-align: right;\">6.998</td><td style=\"text-align: right;\">    3</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.06905</td><td style=\"text-align: right;\">7.147</td><td style=\"text-align: right;\">    3</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.02985</td><td style=\"text-align: right;\">6.43 </td><td style=\"text-align: right;\">    3</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.08829</td><td style=\"text-align: right;\">6.012</td><td style=\"text-align: right;\">    5</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.14455</td><td style=\"text-align: right;\">6.172</td><td style=\"text-align: right;\">    5</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.21124</td><td style=\"text-align: right;\">5.631</td><td style=\"text-align: right;\">    5</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.17004</td><td style=\"text-align: right;\">6.004</td><td style=\"text-align: right;\">    5</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.22489</td><td style=\"text-align: right;\">6.377</td><td style=\"text-align: right;\">    5</td></tr>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": []
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "columns = [\"CRIM\", \"RM\", \"RAD\"]\n",
    "fr[columns].head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Select a subset of rows\n",
    "\n",
    "Unlike in Pandas, columns may be identified by index or column name. **Therefore, when subsetting by rows, you must also pass the column selection.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<tr><th style=\"text-align: right;\">   CRIM</th><th style=\"text-align: right;\">  ZN</th><th style=\"text-align: right;\">     B</th><th style=\"text-align: right;\">  LSTAT</th><th style=\"text-align: right;\">  Median_value</th><th style=\"text-align: right;\">  AGE</th><th style=\"text-align: right;\">  TAX</th><th style=\"text-align: right;\">  RAD</th><th style=\"text-align: right;\">  CHAS</th><th style=\"text-align: right;\">  NOX</th><th style=\"text-align: right;\">   RM</th><th style=\"text-align: right;\">  INDUS</th><th style=\"text-align: right;\">  PTRATIO</th><th style=\"text-align: right;\">   DIS</th></tr>\n",
       "<tr><td style=\"text-align: right;\">0.03237</td><td style=\"text-align: right;\"> 0  </td><td style=\"text-align: right;\">394.63</td><td style=\"text-align: right;\">   2.94</td><td style=\"text-align: right;\">          33.4</td><td style=\"text-align: right;\"> 45.8</td><td style=\"text-align: right;\">  222</td><td style=\"text-align: right;\">    3</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.458</td><td style=\"text-align: right;\">6.998</td><td style=\"text-align: right;\">   2.18</td><td style=\"text-align: right;\">     18.7</td><td style=\"text-align: right;\">6.0622</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.06905</td><td style=\"text-align: right;\"> 0  </td><td style=\"text-align: right;\">396.9 </td><td style=\"text-align: right;\">   5.33</td><td style=\"text-align: right;\">          36.2</td><td style=\"text-align: right;\"> 54.2</td><td style=\"text-align: right;\">  222</td><td style=\"text-align: right;\">    3</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.458</td><td style=\"text-align: right;\">7.147</td><td style=\"text-align: right;\">   2.18</td><td style=\"text-align: right;\">     18.7</td><td style=\"text-align: right;\">6.0622</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.02985</td><td style=\"text-align: right;\"> 0  </td><td style=\"text-align: right;\">394.12</td><td style=\"text-align: right;\">   5.21</td><td style=\"text-align: right;\">          28.7</td><td style=\"text-align: right;\"> 58.7</td><td style=\"text-align: right;\">  222</td><td style=\"text-align: right;\">    3</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.458</td><td style=\"text-align: right;\">6.43 </td><td style=\"text-align: right;\">   2.18</td><td style=\"text-align: right;\">     18.7</td><td style=\"text-align: right;\">6.0622</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.08829</td><td style=\"text-align: right;\">12.5</td><td style=\"text-align: right;\">395.6 </td><td style=\"text-align: right;\">  12.43</td><td style=\"text-align: right;\">          22.9</td><td style=\"text-align: right;\"> 66.6</td><td style=\"text-align: right;\">  311</td><td style=\"text-align: right;\">    5</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.524</td><td style=\"text-align: right;\">6.012</td><td style=\"text-align: right;\">   7.87</td><td style=\"text-align: right;\">     15.2</td><td style=\"text-align: right;\">5.5605</td></tr>\n",
       "<tr><td style=\"text-align: right;\">0.14455</td><td style=\"text-align: right;\">12.5</td><td style=\"text-align: right;\">396.9 </td><td style=\"text-align: right;\">  19.15</td><td style=\"text-align: right;\">          27.1</td><td style=\"text-align: right;\"> 96.1</td><td style=\"text-align: right;\">  311</td><td style=\"text-align: right;\">    5</td><td style=\"text-align: right;\">     0</td><td style=\"text-align: right;\">0.524</td><td style=\"text-align: right;\">6.172</td><td style=\"text-align: right;\">   7.87</td><td style=\"text-align: right;\">     15.2</td><td style=\"text-align: right;\">5.9505</td></tr>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": []
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fr[2:7,:]  # explicitly select all columns with :"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Key attributes:\n",
    "      * columns, names, col_names\n",
    "      * len, shape, dim, nrow, ncol\n",
    "      * types\n",
    "      \n",
    "Note: \n",
    "\n",
    "Since the data is _not_ in local python memory\n",
    "there is no \"values\" attribute. If you want to \n",
    "pull all of the data into the local python memory\n",
    "then do so explicitly with h2o.export_file and\n",
    "reading the data into python memory from disk."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Columns: [u'CRIM', u'ZN', u'B', u'LSTAT', u'Median_value', u'AGE', u'TAX', u'RAD', u'CHAS', u'NOX', u'RM', u'INDUS', u'PTRATIO', u'DIS'] \n",
      "\n",
      "Columns: [u'CRIM', u'ZN', u'B', u'LSTAT', u'Median_value', u'AGE', u'TAX', u'RAD', u'CHAS', u'NOX', u'RM', u'INDUS', u'PTRATIO', u'DIS'] \n",
      "\n",
      "Columns: [u'CRIM', u'ZN', u'B', u'LSTAT', u'Median_value', u'AGE', u'TAX', u'RAD', u'CHAS', u'NOX', u'RM', u'INDUS', u'PTRATIO', u'DIS'] \n",
      "\n",
      "length: 462 \n",
      "\n",
      "shape: (462, 14) \n",
      "\n",
      "dim: [462, 14] \n",
      "\n",
      "nrow: 462 \n",
      "\n",
      "ncol: 14 \n",
      "\n",
      "types: {u'CRIM': u'real', u'ZN': u'real', u'B': u'real', u'LSTAT': u'real', u'TAX': u'int', u'AGE': u'real', u'Median_value': u'real', u'RAD': u'int', u'CHAS': u'int', u'NOX': u'real', u'RM': u'real', u'INDUS': u'real', u'PTRATIO': u'real', u'DIS': u'real'} \n",
      "\n"
     ]
    }
   ],
   "source": [
    "# The columns attribute is exactly like Pandas\n",
    "print(\"Columns:\", fr.columns, \"\\n\")\n",
    "print(\"Columns:\", fr.names, \"\\n\")\n",
    "print(\"Columns:\", fr.col_names, \"\\n\")\n",
    "\n",
    "# There are a number of attributes to get at the shape\n",
    "print(\"length:\", str( len(fr) ), \"\\n\")\n",
    "print(\"shape:\", fr.shape, \"\\n\")\n",
    "print(\"dim:\", fr.dim, \"\\n\")\n",
    "print(\"nrow:\", fr.nrow, \"\\n\")\n",
    "print(\"ncol:\", fr.ncol, \"\\n\")\n",
    "\n",
    "# Use the \"types\" attribute to list the column types\n",
    "print(\"types:\", fr.types, \"\\n\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Select rows based on value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(462, 14)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fr.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Boolean masks can be used to subselect rows based on a criteria."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(155, 14)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mask = fr[\"CRIM\"]>1\n",
    "fr[mask,:].shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Get summary statistics of the data and additional data distribution information."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Rows:462 Cols:14\n",
      "\n",
      "Chunk compression summary:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td><b>chunk_type</b></td>\n",
       "<td><b>chunk_name</b></td>\n",
       "<td><b>count</b></td>\n",
       "<td><b>count_percentage</b></td>\n",
       "<td><b>size</b></td>\n",
       "<td><b>size_percentage</b></td></tr>\n",
       "<tr><td>CBS</td>\n",
       "<td>Bits</td>\n",
       "<td>1</td>\n",
       "<td>7.1428576</td>\n",
       "<td>    128  B</td>\n",
       "<td>0.4</td></tr>\n",
       "<tr><td>C1N</td>\n",
       "<td>1-Byte Integers (w/o NAs)</td>\n",
       "<td>1</td>\n",
       "<td>7.1428576</td>\n",
       "<td>    530  B</td>\n",
       "<td>1.6260661</td></tr>\n",
       "<tr><td>C2</td>\n",
       "<td>2-Byte Integers</td>\n",
       "<td>1</td>\n",
       "<td>7.1428576</td>\n",
       "<td>    992  B</td>\n",
       "<td>3.043505</td></tr>\n",
       "<tr><td>C2S</td>\n",
       "<td>2-Byte Fractions</td>\n",
       "<td>1</td>\n",
       "<td>7.1428576</td>\n",
       "<td>   1008  B</td>\n",
       "<td>3.0925937</td></tr>\n",
       "<tr><td>CUD</td>\n",
       "<td>Unique Reals</td>\n",
       "<td>4</td>\n",
       "<td>28.57143</td>\n",
       "<td>    7.2 KB</td>\n",
       "<td>22.5563</td></tr>\n",
       "<tr><td>C8D</td>\n",
       "<td>64-bit Reals</td>\n",
       "<td>6</td>\n",
       "<td>42.857143</td>\n",
       "<td>   22.1 KB</td>\n",
       "<td>69.288826</td></tr></table></div>"
      ],
      "text/plain": [
       "chunk_type    chunk_name                 count    count_percentage    size     size_percentage\n",
       "------------  -------------------------  -------  ------------------  -------  -----------------\n",
       "CBS           Bits                       1        7.14286             128  B   0.39271\n",
       "C1N           1-Byte Integers (w/o NAs)  1        7.14286             530  B   1.62607\n",
       "C2            2-Byte Integers            1        7.14286             992  B   3.04351\n",
       "C2S           2-Byte Fractions           1        7.14286             1008  B  3.09259\n",
       "CUD           Unique Reals               4        28.5714             7.2 KB   22.5563\n",
       "C8D           64-bit Reals               6        42.8571             22.1 KB  69.2888"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Frame distribution summary:\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div style=\"overflow:auto\"><table style=\"width:50%\"><tr><td><b></b></td>\n",
       "<td><b>size</b></td>\n",
       "<td><b>number_of_rows</b></td>\n",
       "<td><b>number_of_chunks_per_column</b></td>\n",
       "<td><b>number_of_chunks</b></td></tr>\n",
       "<tr><td>172.16.2.40:54321</td>\n",
       "<td>   31.8 KB</td>\n",
       "<td>462.0</td>\n",
       "<td>1.0</td>\n",
       "<td>14.0</td></tr>\n",
       "<tr><td>mean</td>\n",
       "<td>   31.8 KB</td>\n",
       "<td>462.0</td>\n",
       "<td>1.0</td>\n",
       "<td>14.0</td></tr>\n",
       "<tr><td>min</td>\n",
       "<td>   31.8 KB</td>\n",
       "<td>462.0</td>\n",
       "<td>1.0</td>\n",
       "<td>14.0</td></tr>\n",
       "<tr><td>max</td>\n",
       "<td>   31.8 KB</td>\n",
       "<td>462.0</td>\n",
       "<td>1.0</td>\n",
       "<td>14.0</td></tr>\n",
       "<tr><td>stddev</td>\n",
       "<td>      0  B</td>\n",
       "<td>0.0</td>\n",
       "<td>0.0</td>\n",
       "<td>0.0</td></tr>\n",
       "<tr><td>total</td>\n",
       "<td>   31.8 KB</td>\n",
       "<td>462.0</td>\n",
       "<td>1.0</td>\n",
       "<td>14.0</td></tr></table></div>"
      ],
      "text/plain": [
       "                   size     number_of_rows    number_of_chunks_per_column    number_of_chunks\n",
       "-----------------  -------  ----------------  -----------------------------  ------------------\n",
       "172.16.2.40:54321  31.8 KB  462               1                              14\n",
       "mean               31.8 KB  462               1                              14\n",
       "min                31.8 KB  462               1                              14\n",
       "max                31.8 KB  462               1                              14\n",
       "stddev             0  B     0                 0                              0\n",
       "total              31.8 KB  462               1                              14"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<tr><th>       </th><th>CRIM         </th><th>ZN           </th><th>B            </th><th>LSTAT        </th><th>Median_value  </th><th>AGE          </th><th>TAX          </th><th>RAD          </th><th>CHAS           </th><th>NOX           </th><th>RM            </th><th>INDUS        </th><th>PTRATIO      </th><th>DIS          </th></tr>\n",
       "<tr><td>type   </td><td>real         </td><td>real         </td><td>real         </td><td>real         </td><td>real          </td><td>real         </td><td>int          </td><td>int          </td><td>int            </td><td>real          </td><td>real          </td><td>real         </td><td>real         </td><td>real         </td></tr>\n",
       "<tr><td>mins   </td><td>0.00632      </td><td>0.0          </td><td>0.32         </td><td>1.73         </td><td>5.0           </td><td>6.0          </td><td>187.0        </td><td>1.0          </td><td>0.0            </td><td>0.385         </td><td>3.561         </td><td>0.46         </td><td>12.6         </td><td>1.1296       </td></tr>\n",
       "<tr><td>mean   </td><td>3.56810333333</td><td>11.0865800866</td><td>357.205194805</td><td>12.6678787879</td><td>22.6028138528 </td><td>68.911038961 </td><td>407.554112554</td><td>9.44155844156</td><td>0.0627705627706</td><td>0.555068831169</td><td>6.28235930736 </td><td>11.1380519481</td><td>18.45995671  </td><td>3.79056731602</td></tr>\n",
       "<tr><td>maxs   </td><td>88.9762      </td><td>100.0        </td><td>396.9        </td><td>37.97        </td><td>50.0          </td><td>100.0        </td><td>711.0        </td><td>24.0         </td><td>1.0            </td><td>0.871         </td><td>8.78          </td><td>27.74        </td><td>22.0         </td><td>12.1265      </td></tr>\n",
       "<tr><td>sigma  </td><td>8.68268014543</td><td>23.2086423052</td><td>90.7500779002</td><td>7.1419482934 </td><td>9.21258527358 </td><td>27.9631409743</td><td>167.460295078</td><td>8.64357146773</td><td>0.242812755044 </td><td>0.115349440715</td><td>0.707139172922</td><td>6.85982058776</td><td>2.16522966932</td><td>2.11032018051</td></tr>\n",
       "<tr><td>zeros  </td><td>0            </td><td>343          </td><td>0            </td><td>0            </td><td>0             </td><td>0            </td><td>0            </td><td>0            </td><td>433            </td><td>0             </td><td>0             </td><td>0            </td><td>0            </td><td>0            </td></tr>\n",
       "<tr><td>missing</td><td>0            </td><td>0            </td><td>0            </td><td>0            </td><td>0             </td><td>0            </td><td>0            </td><td>0            </td><td>0              </td><td>0             </td><td>0             </td><td>0            </td><td>0            </td><td>0            </td></tr>\n",
       "<tr><td>0      </td><td>0.00632      </td><td>18.0         </td><td>396.9        </td><td>4.98         </td><td>24.0          </td><td>65.2         </td><td>296.0        </td><td>1.0          </td><td>0.0            </td><td>0.538         </td><td>6.575         </td><td>2.31         </td><td>15.3         </td><td>4.09         </td></tr>\n",
       "<tr><td>1      </td><td>0.02729      </td><td>0.0          </td><td>392.83       </td><td>4.03         </td><td>34.7          </td><td>61.1         </td><td>242.0        </td><td>2.0          </td><td>0.0            </td><td>0.469         </td><td>7.185         </td><td>7.07         </td><td>17.8         </td><td>4.9671       </td></tr>\n",
       "<tr><td>2      </td><td>0.03237      </td><td>0.0          </td><td>394.63       </td><td>2.94         </td><td>33.4          </td><td>45.8         </td><td>222.0        </td><td>3.0          </td><td>0.0            </td><td>0.458         </td><td>6.998         </td><td>2.18         </td><td>18.7         </td><td>6.0622       </td></tr>\n",
       "<tr><td>3      </td><td>0.06905      </td><td>0.0          </td><td>396.9        </td><td>5.33         </td><td>36.2          </td><td>54.2         </td><td>222.0        </td><td>3.0          </td><td>0.0            </td><td>0.458         </td><td>7.147         </td><td>2.18         </td><td>18.7         </td><td>6.0622       </td></tr>\n",
       "<tr><td>4      </td><td>0.02985      </td><td>0.0          </td><td>394.12       </td><td>5.21         </td><td>28.7          </td><td>58.7         </td><td>222.0        </td><td>3.0          </td><td>0.0            </td><td>0.458         </td><td>6.43          </td><td>2.18         </td><td>18.7         </td><td>6.0622       </td></tr>\n",
       "<tr><td>5      </td><td>0.08829      </td><td>12.5         </td><td>395.6        </td><td>12.43        </td><td>22.9          </td><td>66.6         </td><td>311.0        </td><td>5.0          </td><td>0.0            </td><td>0.524         </td><td>6.012         </td><td>7.87         </td><td>15.2         </td><td>5.5605       </td></tr>\n",
       "<tr><td>6      </td><td>0.14455      </td><td>12.5         </td><td>396.9        </td><td>19.15        </td><td>27.1          </td><td>96.1         </td><td>311.0        </td><td>5.0          </td><td>0.0            </td><td>0.524         </td><td>6.172         </td><td>7.87         </td><td>15.2         </td><td>5.9505       </td></tr>\n",
       "<tr><td>7      </td><td>0.21124      </td><td>12.5         </td><td>386.63       </td><td>29.93        </td><td>16.5          </td><td>100.0        </td><td>311.0        </td><td>5.0          </td><td>0.0            </td><td>0.524         </td><td>5.631         </td><td>7.87         </td><td>15.2         </td><td>6.0821       </td></tr>\n",
       "<tr><td>8      </td><td>0.17004      </td><td>12.5         </td><td>386.71       </td><td>17.1         </td><td>18.9          </td><td>85.9         </td><td>311.0        </td><td>5.0          </td><td>0.0            </td><td>0.524         </td><td>6.004         </td><td>7.87         </td><td>15.2         </td><td>6.5921       </td></tr>\n",
       "<tr><td>9      </td><td>0.22489      </td><td>12.5         </td><td>392.52       </td><td>20.45        </td><td>15.0          </td><td>94.3         </td><td>311.0        </td><td>5.0          </td><td>0.0            </td><td>0.524         </td><td>6.377         </td><td>7.87         </td><td>15.2         </td><td>6.3467       </td></tr>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fr.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Set up the predictor and response column names\n",
    "\n",
    "Using H2O algorithms, it's easier to reference predictor and response columns\n",
    "by name in a single frame (i.e., don't split up X and y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x = fr.names[:]\n",
    "y=\"Median_value\"\n",
    "x.remove(y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Machine Learning With H2O"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "H2O is a machine learning library built in Java with interfaces in Python, R, Scala, and Javascript. It is [open source](http://github.com/h2oai) and [well-documented](http://docs.h2o.ai).\n",
    "\n",
    "Unlike Scikit-learn, H2O allows for categorical and missing data.\n",
    "\n",
    "The basic work flow is as follows:\n",
    "* Fit the training data with a machine learning algorithm\n",
    "* Predict on the testing data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Simple model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n"
     ]
    }
   ],
   "source": [
    "# Define and fit first 400 points\n",
    "model = H2ORandomForestEstimator(seed=42)\n",
    "model.train(x=x, y=y, training_frame=fr[:400,:])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "<tr><td style=\"text-align: right;\">   12.736</td></tr>\n",
       "<tr><td style=\"text-align: right;\">   10.1  </td></tr>\n",
       "<tr><td style=\"text-align: right;\">   10.048</td></tr>\n",
       "<tr><td style=\"text-align: right;\">   12.742</td></tr>\n",
       "<tr><td style=\"text-align: right;\">   10.498</td></tr>\n",
       "<tr><td style=\"text-align: right;\">   14.902</td></tr>\n",
       "<tr><td style=\"text-align: right;\">   17.218</td></tr>\n",
       "<tr><td style=\"text-align: right;\">   15.148</td></tr>\n",
       "<tr><td style=\"text-align: right;\">   14.738</td></tr>\n",
       "<tr><td style=\"text-align: right;\">   16.491</td></tr>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": []
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.predict(fr[400:fr.nrow,:])        # Predict the rest"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The performance of the model can be checked using the holdout dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "ModelMetricsRegression: drf\n",
      "** Reported on test data. **\n",
      "\n",
      "MSE: 13.4756382476\n",
      "R^2: 0.405996106866\n",
      "Mean Residual Deviance: 13.4756382476\n"
     ]
    },
    {
     "data": {
      "text/plain": []
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "perf = model.model_performance(fr[400:fr.nrow,:])\n",
    "perf.r2()      # get the r2 on the holdout data\n",
    "perf.mse()     # get the mse on the holdout data\n",
    "perf           # display the performance object"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train-Test Split"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Instead of taking the first 400 observations for training, we can use H2O to create a random test train split of the data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.8530416308371256"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r = fr.runif(seed=12345)   # build random uniform column over [0,1]\n",
    "train= fr[r<0.75,:]     # perform a 75-25 split\n",
    "test = fr[r>=0.75,:]\n",
    "\n",
    "model = H2ORandomForestEstimator(seed=42)\n",
    "model.train(x=x, y=y, training_frame=train, validation_frame=test)\n",
    "\n",
    "perf = model.model_performance(test)\n",
    "perf.r2()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There was a massive jump in the R^2 value. This is because the original data is not shuffled."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Cross validation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "H2O's machine learning algorithms take an optional parameter **nfolds** to specify the number of cross-validation folds to build. H2O's cross-validation uses an internal weight vector to build the folds in an efficient manner (instead of physically building the splits)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In conjunction with the **nfolds** parameter, a user may specify the way in which observations are assigned to each fold with the **fold_assignment** parameter, which can be set to either:\n",
    "        * AUTO:  Perform random assignment\n",
    "        * Random: Each row has a equal (1/nfolds) chance of being in any fold.\n",
    "        * Modulo: Observations are in/out of the fold based by modding on nfolds"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n"
     ]
    }
   ],
   "source": [
    "model = H2ORandomForestEstimator(nfolds=10) # build a 10-fold cross-validated model\n",
    "model.train(x=x, y=y, training_frame=fr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Expected R^2: 0.86 +/- 0.03 \n",
      "\n",
      "Scores: [ 0.83  0.87  0.84  0.87  0.86  0.88  0.86  0.85  0.87  0.87]\n"
     ]
    }
   ],
   "source": [
    "scores = numpy.array([m.r2() for m in model.xvals]) # iterate over the xval models using the xvals attribute\n",
    "print(\"Expected R^2: %.2f +/- %.2f \\n\" % (scores.mean(), scores.std()*1.96))\n",
    "print(\"Scores:\", scores.round(2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "However, you can still make use of the cross_val_score from Scikit-Learn"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Cross validation: H2O and Scikit-Learn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.model_selection import cross_val_score\n",
    "from h2o.cross_validation import H2OKFold\n",
    "from h2o.model.regression import h2o_r2_score\n",
    "from sklearn.metrics.scorer import make_scorer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You still must use H2O to make the folds. Currently, there is no H2OStratifiedKFold. Additionally, the H2ORandomForestEstimator is similar to the scikit-learn RandomForestRegressor object with its own ``train`` method."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model = H2ORandomForestEstimator(seed=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n",
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n",
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n",
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n",
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n",
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n",
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n",
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n",
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n",
      "\n",
      "drf Model Build Progress: [##################################################] 100%\n",
      "Expected R^2: 0.87 +/- 0.10 \n",
      "\n",
      "Scores: [ 0.84  0.88  0.87  0.93  0.82  0.76  0.85  0.92  0.91  0.89]\n"
     ]
    }
   ],
   "source": [
    "scorer = make_scorer(h2o_r2_score)   # make h2o_r2_score into a scikit_learn scorer\n",
    "custom_cv = H2OKFold(fr, n_folds=10, seed=42) # make a cv \n",
    "scores = cross_val_score(model, fr[x], fr[y], scoring=scorer, cv=custom_cv)\n",
    "\n",
    "print(\"Expected R^2: %.2f +/- %.2f \\n\" % (scores.mean(), scores.std()*1.96))\n",
    "print(\"Scores:\", scores.round(2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There isn't much difference in the R^2 value since the fold strategy is exactly the same. However, there was a major difference in terms of computation time and memory usage."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Since the progress bar print out gets annoying let's disable that"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "h2o.__PROGRESS_BAR__=False\n",
    "h2o.no_progress()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Grid Search"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Grid search in H2O is still under active development and it will be available very soon. However, it is possible to make use of Scikit's grid search infrastructure (with some performance penalties)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Randomized grid search: H2O and Scikit-Learn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.16.1\n"
     ]
    }
   ],
   "source": [
    "from sklearn import __version__\n",
    "sklearn_version = __version__\n",
    "print(sklearn_version)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you have 0.16.1, then your system can't handle complex randomized grid searches (it works in every other version of sklearn, including the soon to be released 0.16.2 and the older versions).\n",
    "\n",
    "The steps to perform a randomized grid search:\n",
    "1. Import model and RandomizedSearchCV\n",
    "2. Define model\n",
    "3. Specify parameters to test\n",
    "4. Define grid search object\n",
    "5. Fit data to grid search object\n",
    "6. Collect scores\n",
    "\n",
    "All the steps will be repeated from above.\n",
    "\n",
    "Because 0.16.1 is installed, we use scipy to define specific distributions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "ADVANCED TIP:\n",
    "\n",
    "Turn off reference counting for spawning jobs in parallel (n_jobs=-1, or n_jobs > 1).\n",
    "We'll turn it back on again in the aftermath of a Parallel job.\n",
    "\n",
    "If you don't want to run jobs in parallel, don't turn off the reference counting.\n",
    "\n",
    "Pattern is:\n",
    "         >>> h2o.turn_off_ref_cnts()\n",
    "         >>> .... parallel job ....\n",
    "         >>> h2o.turn_on_ref_cnts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best R^2: 0.834051920102 \n",
      "\n",
      "Best params: {'mtries': 3, 'ntrees': 36, 'min_rows': 1, 'max_depth': 6}\n",
      "CPU times: user 1min 11s, sys: 2.6 s, total: 1min 13s\n",
      "Wall time: 5min 48s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "from sklearn.model_selection import RandomizedSearchCV  # Import grid search\n",
    "from scipy.stats import randint, uniform\n",
    "\n",
    "model = H2ORandomForestEstimator(seed=42)        # Define model\n",
    "\n",
    "params = {\"ntrees\": randint(20,30),\n",
    "          \"max_depth\": randint(1,10),\n",
    "          \"min_rows\": randint(1,10),    # scikit's  min_samples_leaf\n",
    "          \"mtries\": randint(2,fr[x].shape[1]),} # Specify parameters to test\n",
    "\n",
    "scorer = make_scorer(h2o_r2_score)   # make h2o_r2_score into a scikit_learn scorer\n",
    "custom_cv = H2OKFold(fr, n_folds=5, seed=42) # make a cv \n",
    "random_search = RandomizedSearchCV(model, params, \n",
    "                                   n_iter=10, \n",
    "                                   scoring=scorer, \n",
    "                                   cv=custom_cv, \n",
    "                                   random_state=42,\n",
    "                                   n_jobs=1)       # Define grid search object\n",
    "\n",
    "random_search.fit(fr[x], fr[y])\n",
    "\n",
    "print(\"Best R^2:\", random_search.best_score_, \"\\n\")\n",
    "print(\"Best params:\", random_search.best_params_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We might be tempted to think that we just had a large improvement; however we must be cautious. The function below creates a more detailed report."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def report_grid_score_detail(random_search, charts=True):\n",
    "    \"\"\"Input fit grid search estimator. Returns df of scores with details\"\"\"\n",
    "    df_list = []\n",
    "\n",
    "    for line in random_search.grid_scores_:\n",
    "        results_dict = dict(line.parameters)\n",
    "        results_dict[\"score\"] = line.mean_validation_score\n",
    "        results_dict[\"std\"] = line.cv_validation_scores.std()*1.96\n",
    "        df_list.append(results_dict)\n",
    "\n",
    "    result_df = pd.DataFrame(df_list)\n",
    "    result_df = result_df.sort(\"score\", ascending=False)\n",
    "    \n",
    "    if charts:\n",
    "        for col in get_numeric(result_df):\n",
    "            if col not in [\"score\", \"std\"]:\n",
    "                plt.scatter(result_df[col], result_df.score)\n",
    "                plt.title(col)\n",
    "                plt.show()\n",
    "\n",
    "        for col in list(result_df.columns[result_df.dtypes == \"object\"]):\n",
    "            cat_plot = result_df.score.groupby(result_df[col]).mean()[0]\n",
    "            cat_plot.sort()\n",
    "            cat_plot.plot(kind=\"barh\", xlim=(.5, None), figsize=(7, cat_plot.shape[0]/2))\n",
    "            plt.show()\n",
    "    return result_df\n",
    "\n",
    "def get_numeric(X):\n",
    "    \"\"\"Return list of numeric dtypes variables\"\"\"\n",
    "    return X.dtypes[X.dtypes.apply(lambda x: str(x).startswith((\"float\", \"int\", \"bool\")))].index.tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAEICAYAAAC+iFRkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtcVHX+P/DXcWZERvCCIsLM6CCgAyo3EbO0JlPBMrxl\nYZZmrNK27re2m9Xud4WtNdmsbGNrqbVvaSq6XURdRcOavBXjBSkDDRV0QEVUEGTQYWbO7w8dm+Wn\nAyjOQef1fDw+j8ecM5/POe8Z9TXHz5w5RxBFEUREdHvrIHUBRER08zHsiYg8AMOeiMgDMOyJiDwA\nw56IyAMw7ImIPADDnqgZBoNBr9FoTDdj22VlZdoOHTrY7XY7/y3STcW/YERupNVqy7755ptRUtdB\nnodhT+RGgiCIoigKUtdBnodhT+2SVqstW7Ro0QuRkZE/+vr61qWkpCyprKwMGDdu3MauXbueGzNm\nzNc1NTXdAGDq1Kn/DgwMPNGtW7eae+6557uioqIIALBYLB1jYmIKMjMz5wKAzWaT3XXXXTtef/31\nP7nad0NDg/cTTzzxiZ+f39mBAwf+vGvXrqHOzx8/fjxoypQpX/Tq1etUv379jrz33nu/dzyXlpaW\n9tBDD32enJyc3aVLl9ohQ4bs+fHHHyMB4PHHH1927NixPg8++OA6X1/fukWLFr3gGPfZZ5891rdv\n36P+/v5VCxYseLXt3kmiy0RRZGNrd02r1ZYOHz5856lTp/wrKiqCevXqVRkTE7N33759URcuXPAa\nNWrUlvT09D+LooiPP/541vnz5ztbLBbFs88++050dHSBYzv79+8f2L1797PFxcW6119//Y/Dhw/f\nabfbBVf7njdv3sK77777u+rq6m4mk0k9cODA/RqN5pgoirDZbB1iY2P3vPbaa39qbGyUHzlyJLhf\nv36HN23aNFYURcyfPz9NoVBYvvjii8lWq1W2aNGi54ODg49YrVaZ43Vt2bJllGNfpaWlWkEQ7HPm\nzMm6cOGCV2FhYaSXl9eF4uJindR/Bmy3V5O8ADa2qzWtVlu6YsWKaY7lKVOmfP7000//w7H83nvv\nzZ04ceJXTcdVV1d3EwTBXltb6+tY99Zbbz3Xv3//g35+fmcOHToU0ty+ncNbFEV8+OGHs9VqtUkU\nRfzwww/D+vTpc9S5/4IFC16ZNWvWx6J4KeyHDx++0/Gc3W4XAgMDj2/fvv0ux+u6WthXVFQEOdbF\nx8fnZ2dnPyL1nwHb7dU4jUPtVkBAQKXjsbe3d4PzcqdOnS6cP3/ex263d3j55ZcXhoaGHurateu5\n4ODgUkEQxNOnT/d09J0xY8bSY8eO9bn//vs3hISEHG5uv8ePHw9yPvumT58+xxyPjx492vf48eNB\n3bt3r3a0N95445VTp071cvRRq9XljseCIIhqtbr8+PHjQa722bt375OOx0ql0lxfX9+5uTqJWoNh\nT7cM8SpfbK5YseLRtWvXJm3ZsuW+c+fOdS0tLQ0WRVFw7vv000+/P378+PW5ubmJO3bsuKu5/QQG\nBp44duxYH8ey82ONRmMKDg4ura6u7u5otbW1XdavXz/e0cdkMmkcj+12e4fy8nJ1UFDQceBS+F/f\nqye6MQx7uqXV1dX5enl5XfTz8ztbX1/f+dVXX13g/PyyZcseLygoiPn0009n/v3vf/+fmTNnftrc\nUfPDDz+8+o033nilpqamW3l5udr5C9j4+Hijr69v3d/+9reXGhoavG02m2z//v2Ddu/eHefos2fP\nniFfffXVJKvVKl+8ePGznTp1unDHHXf8AFz638rhw4dDmntdV/tgI7oRDHu6ZTgfFQuCIAqCIM6Y\nMWNp3759j6pUqopBgwbtHz58+PeOfseOHevzhz/84Z2lS5fOUCqV5mnTpq2Mi4vb/dxzz73taj/z\n589P79u379Hg4ODSxMTE3BkzZix1bFMmk9nWr18/ft++fdH9+vU74u/vXzVnzpwPa2truzjqmjBh\nQs6qVase8fPzO7t8+fLpX3755WSZTGYDgFdeeeWN119//U/du3evfvvtt59r+rqu9lqJ2oIgivw7\nRdRW0tPT5x86dCh02bJlj0tdC5GzZo/sc3NzE3U63YGwsLCSjIyMeU2fr66u7j5p0qSvoqKiCocN\nG5b/888/D2zpWKLbDadfqL1yGfY2m002d+7czNzc3MSioqKIlStXTisuLg537rNgwYJXY2Nj9xYW\nFkYtXbp0xjPPPPNuS8cSSWXcuHEbfX1965q2hQsXvnwj23VML7VVnURtRe7qSaPRGB8aGnpIq9WW\nAUBycnJ2Tk7OhPDw8GJHn+Li4vCXX355IQAMGDDgYFlZmfbUqVO9Dh8+HNLcWCKpbNy4cdzN2O78\n+fPTb8Z2iW6Uy7CvqKhQOZ9vrFary/Pz84c594mKiir88ssvJ48YMWK70WiMP3r0aN/y8nJ1S8by\n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\n8AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108134690>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nPRGRBPx/O2xPD9S+lzkAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10816f9d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1081aa3d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x107949d90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>max_depth</th>\n",
       "      <th>min_rows</th>\n",
       "      <th>mtries</th>\n",
       "      <th>ntrees</th>\n",
       "      <th>score</th>\n",
       "      <th>std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>36</td>\n",
       "      <td>0.834052</td>\n",
       "      <td>0.140556</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>47</td>\n",
       "      <td>0.823304</td>\n",
       "      <td>0.163869</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>25</td>\n",
       "      <td>0.822285</td>\n",
       "      <td>0.162661</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>40</td>\n",
       "      <td>0.821114</td>\n",
       "      <td>0.134162</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>45</td>\n",
       "      <td>0.820230</td>\n",
       "      <td>0.160923</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    max_depth  min_rows  mtries  ntrees     score       std\n",
       "24          6         1       3      36  0.834052  0.140556\n",
       "27          9         5       5      47  0.823304  0.163869\n",
       "17          7         3       7      25  0.822285  0.162661\n",
       "22          6         3       3      40  0.821114  0.134162\n",
       "1           6         3       3      45  0.820230  0.160923"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "report_grid_score_detail(random_search).head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Based on the grid search report, we can narrow the parameters to search and rerun the analysis. The parameters below were chosen after a few runs:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best R^2: 0.847411248634 \n",
      "\n",
      "Best params: {'mtries': 9, 'ntrees': 34, 'max_depth': 6}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nABjwf7ahvoSfY0N5AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10804f050>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAEICAYAAAC+iFRkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAH/pJREFUeJzt3XtUVGXfN/DfDDNIKIc4yGmwGRAZEGVGUUojRwLFNPIc\naKmIRPedldZThq33Du9nvRiWT1r2PqmZWHm+LbRCUvIZJUnIZPCAkHLIARUBRQ4DDjOz3z+K1jze\nOjAYbofr+1nrWouZfZjvZrG+7HXNnj0CjuMIAAD6NyHfAQAAoO+h7AEAGICyBwBgAMoeAIABKHsA\nAAag7AEAGICyB+jG9u3b50+ePPl7vnMA3AsBrrMHVlVXV0sDAgIqDQaDSCgUmvjOA9CXcGYPzOM4\nTnC3ZUaj0e5+ZgHoKyh76HekUmn1+++//x8jR4487eTk1JKcnLylrq7Oa8qUKQddXFxuxsbGHm5q\nanJ94oknjhERubq6Njk7OzefOHHi0aysrEXjx48//tprr/2Xh4dHQ3p6enpWVtaiqKio/K79l5WV\nyWNjYw+7u7s3yuXysr17987pWpaTk/PU8OHDzzk7OzdLJJKatWvXvs7H7wDg33Ach4HRr4ZUKq16\n7LHHCq5du+ZZW1vrO3jw4DqlUnlKo9GEd3R0DIiOjv5h1apV/6iurn5EIBCYjEajsGvbrVu3LhKJ\nRJ0bNmx4yWg0Ctvb2x22bt266PHHH8/nOI5aW1sHSiQSbVZW1kKj0SgsLi5WeHh41J8/f17OcRx5\ne3tf+fHHH8dzHEdNTU0up06dUvL9+8DA4DgOZ/bQP7388ssfeXp61vv6+l6OiorKf+yxx34KDw8v\nGTBgwK0ZM2Z8XVxcrLzbtr6+vpdfeumlj4VCocnBwaHDfNm33347TSaTVS1cuHCbUCg0KRQKzcyZ\nM7/as2fPXCIie3t7/blz54Y3Nzc7u7i43FQqlcV9fawAPYGyh37Jy8urruvnhx56qN38sYODQ0dr\na+ugu23r7++vvduy33777ZHCwsLIhx9++EbX2LFjx7y6ujovIqJ9+/bNysnJeUoqlVarVCr1iRMn\nHv2rjgngXoj4DgBwP3B3eBNWIBDc8VK0uz1PRDRkyJBLEyZMOHro0KFJd1oeERFxMjs7e7rRaLT7\n6KOPXp47d+6eS5cuDel9coC/Bs7sgVmenp71QqHQVFFREdjTbaZOnfrdr7/+OuzLL798rrOzU9zZ\n2Sn++eefx5SVlck7OzvF27dvn3/z5k0XOzs7o5OTU4udnZ2xL48BoKdQ9sAE87N1gUDACQQC7qGH\nHmp/++23/+/48eOPu7m5XS8sLIzsWnb7tl3POTk5tRw6dGjSrl27Evz8/Gp9fHyupKWlrdbr9fZE\nRF9++eVzMpmsysXF5eamTZte2L59+/z7e6QAd4YPVQEAMABn9gAADEDZAwAwAGUPAMAAXi+9tHSJ\nGwAA3N2dLie2hPcze74/Qnwv45133uE9A/Lzn4PF/LacvT/k7w3eyx4AAPoeyh4AgAEo+3ugUqn4\njnBPkJ9ftpzflrMT2X7+3uD1Q1UCgYDj8/UBAGyRQCAgztbeoAUAgL6HsgcAYADKHgCAASh7AAAG\noOwBABiAsgcAYADKHgCAASh7AAAGoOwBABiAsgcAYADKHgCAASh7AAAGoOwBABiAsgcAYADKHgCA\nASh7AAAGdFv2ubm5cXK5vCwoKOhCZmbmituXNzQ0eMTFxeUqFApNWFjY2aysrEVdy6RSafXIkSNP\nK5XK4rFjxxb9xdkBAKCHLH5TldFotAsODi7Py8uL8fPzqx0zZszPO3fuTAwJCTnftU56enr6rVu3\nBqxevTqtoaHBIzg4uLyurs5LJBIZZDJZ1S+//DLazc3t+h1fHN9UBQBgtd58U5XI0sKioqKxQ4cO\nvSiVSquJiBISEnbt37//GfOy9/HxuXL69OmRRETNzc3O7u7ujSKRyNC1vLtA6enpf/6sUqmY/G5I\nAABL1Go1qdXqe9qHxbKvra318/f313Y9lkgkNYWFhZHm66SkpGyOjo4+4uvre7mlpcVpz549c7uW\nCQQCLiYmJs/Ozs6Ympq6MSUlZfPtr2Fe9gAA8O9uPxFetWqV1fuwWPYCgaDbOZaMjIyVCoVCo1ar\nVRUVFYGxsbGHS0pKwp2cnFqOHz8+3sfH50p9fb1nbGzsYblcXhYVFZVvdUoAALgnFt+g9fPzq9Vq\ntf5dj7Varb9EIqkxX6egoGDcnDlz9hIRBQYGVshksqry8vJgot+neIiIPD0962fMmPF1UVHR2L/+\nEAAAoDsWyz4iIuLkhQsXgqqrq6V6vd5+9+7dz8bHxx8wX0cul5fl5eXFEBHV1dV5lZeXBwcEBFTq\ndDrHlpYWJyKitra2gYcOHZo0YsSIM313KAAAcDcWp3FEIpFhw4YNSydPnvy90Wi0S05O3hISEnJ+\n48aNqUREqampG1euXJmRlJS0NTw8vMRkMgnXrFnzppub2/XKysqAmTNnfkVEZDAYRPPnz98+adKk\nQ/fjoAAA4H+zeOlln784Lr0EALBaby69xCdoAQAYgLIHAGAAyh4AgAEoewAABli8GgcAoL+5desW\nbd++nerr60mlUlFkZGT3G/UDKPteKikpoX/+cy21tOgoKWk2JSYm8B0JALpx69YteuyxGCovf4j0\n+hEkFk+nTZvep+eem893tD6HSy97obS0lMaOnUBtbW8T0WBydPwHffDBW/TCC0v4jgYAFuzYsYNe\neGEztbUdISIBEWnI2Xky3bxZx3c0q+DSy/tky5Zt1Nb2IhEtI6J5pNNtpczMj/mOBQDduHHjBhmN\nw+j3oiciCqa2thtkiyed1kLZ98Lvfxh2Zs/Ykclk4isOAPSQSqUiofBrIlIT0XUSi1+jqKhJJBBY\ndZJsk1D2vbBo0XPk6PgxEW0komwaODCZli9/ge9YANCN4cOH0+7dn5G39xJycJCRSnWV9u37nO9Y\n9wXm7HupqKiI3nnnvT/foF28eBETZwcAwL/ezNmj7AEAbAzeoAUAgDtC2QMAMABlDwDAAJQ9AAAD\nUPYAAAxA2QMAMABlDwDAAJQ9AAADUPZgc3Q6HT37bBI5OQ0mH58g2rNnL9+RAB54+AQt2JzExGTK\nzm6hjo51RFRJjo5z6IcfvqZHH32U72gA9wU+QQtMyMn5jjo61hKRLxE9Th0dSfT994f4jsUMjuPo\nyJEjtGnTJvrpp5/4jgM9hLIHm+Ps/DARXfzzsb39RXr4YVf+AjHm5ZffoPj4F2n58kKKiXmWVq9+\nn+9I0AOYxgGbk52dTfPmpZJev5Ds7SvJ27uMNJoCcnZ25jtav3f+/HkaPfpJam8/T0QuRHSZBgwI\nodraSnJ3d+c7HjN6M42D76AFmzN9+nQ6dkxC33//Pbm6TqQFC7aSk5MT37GYcPXqVbK3H0rt7S5/\nPONLYvFgqq+vR9k/4HBmDwA91tjYSDJZKLW0bCWiOCL6kjw8/g/V1PxKAwYM4DseM/AGLQD0KXd3\nd8rJ2Ueenn8ngUBMQ4a8Sz/88A2K3gbgzB4AeqWzs5PEYjHfMZiEM3sAuG9Q9LYFZQ8AwACUPQAA\nA1D2AAAMQNkDADAAZQ8AwACUPQAAA1D2AAAMQNkDADAAZQ8AwACUPQAAA7ot+9zc3Di5XF4WFBR0\nITMzc8XtyxsaGjzi4uJyFQqFJiws7GxWVtYi8+VGo9FOqVQWP/3009/8hbkBAMAKFsveaDTaLV26\ndENubm5caWlp6M6dOxPPnz8fYr7Ohg0bliqVymKNRqNQq9Wq119/fa3BYPjzPvnr169/NTQ0tFQg\nEOCOZwD9gF6vp/XrP6TU1Ffo008/JZPJxHck6AGLZV9UVDR26NChF6VSabVYLO5MSEjYtX///mfM\n1/Hx8bnS3NzsTETU3Nzs7O7u3igSiQxERDU1NZKcnJynlixZ8qm1d2gDgAePyWSiuLiZlJaWQ5s2\nyejVV7fS88+/wHcs6AGL31RVW1vr5+/vr+16LJFIagoLCyPN10lJSdkcHR19xNfX93JLS4vTnj17\n5nYtW758+QfvvffeG13/DO4kPT39z59VKhWpVKpeHAYA3A/FxcVUVFRO7e2lRCQmne4F2rdvCL33\n3j/J19eX73j9llqtJrVafU/7sFj2PZl6ycjIWKlQKDRqtVpVUVERGBsbe7ikpCT86NGjEwYPHnxN\nqVQWq9Vq1d22Ny97AHiw6XQ6srNzI6Ku2xs7kkg0iHQ6HZ+x+r3bT4RXrVpl9T4sTuP4+fnVarVa\n/67HWq3WXyKR1JivU1BQMG7OnDl7iYgCAwMrZDJZVVlZmbygoGDcgQMH4mUyWVViYuLOI0eORC9Y\nsOBzqxMCwANj1KhR5OjYQEJhJhGdI7F4BUkkHiSTyfiOBt3hOO6uo7OzUxQQEFBRVVUlvXXrln14\neLimtLQ0xHyd5cuX/1d6evo7HMfR1atXvfz8/GoaGxvdzNdRq9UTpk2b9s3t+//95QHAllRWVnIT\nJkzlfH2DuaeemsNdvXqV70jM+aM7Lfb37cPiNI5IJDJs2LBh6eTJk783Go12ycnJW0JCQs5v3Lgx\nlYgoNTV148qVKzOSkpK2hoeHl5hMJuGaNWvedHNzu377vnA1DkD/IJPJSK3+lu8YYCV8By0AgI3B\nd9ACAMAdoewBABiAsgcAYADKHgCAASh7AAAGoOwBABiAsgcAYADKHgCAASh7AAAGoOwBABiAsgcA\nYADKHgCY8vPPP9PYsU/SI4+MoBdfXEYdHR18R7ovcCM0AGBGdXU1jRgxllpb3yOikeTgsIqmTXOh\nvXu38R3NKr25EZrFWxwDAPQnubm5ZDROI6KFRETU0bGNsrO9ieOySCDo31+TjWkcAGCGg4MDCYWN\nZs80kljswFue+wllDwDMmDlzJrm7/0pi8RIi+pAcHafQP/7xdr8/qyfCnD0AMOb69eu0bt2HVFtb\nT089FU2zZs3iO5LVejNnj7IHALAx+KYqAAC4I5Q9AAADUPYAAAxA2QMAMABlDzbJYDBQZWUlNTQ0\n8B0FwCag7MHmXLp0iYYNU9DIkSry8wukZctWEK7qArAMZQ82JyFhCV26lEBtbb+RXl9Fn376HWVn\nZ/MdC+CBhrIHm3PmjIaMxmQiEhCRG7W1zSCNRsN3LIAHGsoebI5UGkhEB/94dIsGDjxCgYGBfEYC\neODhE7Rgc86cOUMTJsSRyRRIBkMtTZwYQdnZO8jOzo7vaAD3BW6XAMxoamqiX375hVxdXWnUqFFM\n3MgKoAvKHgCAAbg3DgAA3BHKHgCAASh7AAAGoOwBABiAsgcAYADKHgCAASh7AAAGoOwBABiAsgcA\nYADKHoAHHMfRjRs3yGg08h0FGIGyB7jPzp07R/7+weTt/Qg5O3vQvn1f8R0JGNBt2efm5sbJ5fKy\noKCgC5mZmStuX97Q0OARFxeXq1AoNGFhYWezsrIWERF1dHQ4REZGFioUCk1oaGhpWlra6j7ID2BT\nOI6jSZOmU23tCtLrm0mn+4EWLHiRKioq+I4G/R3HcXcdBoPBLjAw8GJVVZVUr9eLw8PDNaWlpSHm\n67zzzjvpb7311mqO46i+vt7Dzc2tsbOzU8RxHLW1tTlyHEednZ2iyMjIE/n5+Y+bb/v7ywOw49q1\na9yAAQ9zRNyfw9l5Ord3716+o4EN+aM7Lfb37cPimX1RUdHYoUOHXpRKpdVisbgzISFh1/79+58x\nX8fHx+dKc3OzMxFRc3Ozs7u7e6NIJDIQETk6OuqIiPR6vb3RaLRzc3O73if/sQBshKurKxEZiOjs\nH8+0kNF4mvz8/HhMBSwQWVpYW1vr5+/vr+16LJFIagoLCyPN10lJSdkcHR19xNfX93JLS4vTnj17\n5nYtM5lMwlGjRp2qqKgI/Nvf/vbfoaGhpbe/Rnp6+p8/q1QqUqlU93A4AA82sVhMW7Z8Qikp0SQS\nqchkOkWJiU/Ro48+ync0eICp1WpSq9X3tA+LZS8QCLq92XxGRsZKhUKhUavVqoqKisDY2NjDJSUl\n4U5OTi1CodCk0WgUN2/edJk8efL3arVapVKp/ldi87IHYMH8+fNo9OhRVFxcTEOGvErjxo3Dl6+A\nRbefCK9atcrqfVicxvHz86vVarX+XY+1Wq2/RCKpMV+noKBg3Jw5c/YSEQUGBlbIZLKq8vLyYPN1\nXFxcbk6dOvW7kydPRlidEKAfksvllJiYSOPHj0fRw31hsewjIiJOXrhwIai6ulqq1+vtd+/e/Wx8\nfPwB83XkcnlZXl5eDBFRXV2dV3l5eXBAQEBlQ0ODR1NTkysRUXt7+0OHDx+OVSqVxX13KAAAcDcW\np3FEIpFhw4YNSydPnvy90Wi0S05O3hISEnJ+48aNqUREqampG1euXJmRlJS0NTw8vMRkMgnXrFnz\nppub2/UzZ86MWLhw4TaTySQ0mUzC559//osnn3zyh/tzWAAAYA7fQQsAYGPwHbQAAHBHKHsAAAag\n7AEAGICyBwBgAMoeAIABKHsAAAag7AEAGICyBwBgAMoeAIABKHsAAAag7AEAGICyBwBgAMoeAIAB\nKHsAAAag7AEAGICyBwBgAMoeAIABKHsAAAag7AEAGICyBwBgAMoeAIABKHsAAAag7AEAGICyBwBg\nAMoeAIABKHsAAAag7AEAGICyBwBgAMoeAJij1+upsbGROI7jO8p9g7IHAKZ8/PEn5OTkRr6+ATRs\nmJJ+++03viPdFwI+/7MJBAKOpf+sAMCvwsJCio6eRTrdMSKSkVCYSWFh31BJyXG+o1lFIBAQx3EC\na7bBmT0AMKOoqIhMpngiCiAiAZlMy+ns2SImpnNQ9gDADH9/f7KzKySiW3888yO5u/uRQGDVSbJN\nQtkDADPi4+MpOjqIBg5UkrPzTHJ0TKAdOz7lO9Z9gTl7AGAKx3F09OhRqq+vp8jISBoyZAjfkazW\nmzl7lD0AgI3BG7QAAHBHKHsAAAag7AEAGICyBwBgQLdln5ubGyeXy8uCgoIuZGZmrrh9eUNDg0dc\nXFyuQqHQhIWFnc3KylpERKTVav0nTpz4P8OHDz8XFhZ29sMPP3ylD/IDAEAPWLwax2g02gUHB5fn\n5eXF+Pn51Y4ZM+bnnTt3JoaEhJzvWic9PT391q1bA1avXp3W0NDgERwcXF5XV+fV0NDgcfXqVW+F\nQqFpbW0dNHr06F+ys7Onm2+Lq3EAAKz3l1+NU1RUNHbo0KEXpVJptVgs7kxISNi1f//+Z8zX8fHx\nudLc3OxMRNTc3Ozs7u7eKBKJDN7e3lcVCoWGiGjQoEGtISEh5y9fvuxr7UEBAMC9E1laWFtb6+fv\n76/teiyRSGoKCwsjzddJSUnZHB0dfcTX1/dyS0uL0549e+bevp/q6mppcXGxMjIysvD2Zenp6X/+\nrFKpSKVS9eIwAAD6L7VaTWq1+p72YbHsBQJBt3MsGRkZKxUKhUatVqsqKioCY2NjD5eUlIQ7OTm1\nEBG1trYOmj179r/Wr1//6qBBg1pv39687AEA4N/dfiK8atUqq/dhcRrHz8+vVqvV+nc91mq1/hKJ\npMZ8nYKCgnFz5szZS0QUGBhYIZPJqsrLy4OJiDo7O8WzZs3a99xzz305ffr0bKvTAQDAX8Ji2UdE\nRJy8cOFCUHV1tVSv19vv3r372fj4+APm68jl8rK8vLwYIqK6ujqv8vLy4ICAgEqO4wTJyclbQkND\nS5ctW7auLw8CAAAs6/beOAcPHpyybNmydUaj0S45OXlLWlra6o0bN6YSEaWmpm5saGjwSEpK2nrp\n0qUhJpNJmJaWtnrevHk7fvzxx8efeOKJYyNHjjzdNR20evXqtLi4uNw/XxxX4wAAWA03QgMAYABu\nhAYAAHeEsmdUXl4ePfPMfJo583k6fty2vn8TAKyHaRwGHTx4kGbPXkw63X8SkZ4cHdPp0KGvafz4\n8XxHA4AewJw99MgTT0yj/Pz5RJT4xzMf04wZJ+irr77gMxYA9BDm7KFHDAYjEdmbPWP/x3MA0F9Z\n/AQt9E/LlydTScly0umIfp/G+Qe98grO6gH6M5Q9g+bMmU1ERB988CmJRHaUlvYZxcTE8JwKAPoS\n5uwBAGwM5uwBAOCOUPYAAAxA2QMAMABlDwDAAJQ9AAADUPYAAAxA2QMAMABlDwDAAJQ9AAADUPYA\nAAxA2QMAMABlDwDAAJQ9AAADUPYAAAxA2QMAMABlDwDAAJQ9AAADUPYAAAxA2QMAMABlDwDAAJQ9\nAAADUPYAAAxA2QMAMABlDwDAAJQ9AAADUPYAAAxA2QMAMABlDwDAAJQ9AAADUPYAAAxA2QMAMABl\nDwDAAJT9PVCr1XxHuCfIzy9bzm/L2YlsP39vdFv2ubm5cXK5vCwoKOhCZmbmituXNzQ0eMTFxeUq\nFApNWFjY2aysrEVdyxYvXvyZl5dX3YgRI878xbkfCLb+B4P8/LLl/Lacncj28/eGxbI3Go12S5cu\n3ZCbmxtXWloaunPnzsTz58+HmK+zYcOGpUqlslij0SjUarXq9ddfX2swGERERElJSVtzc3Pj+vIA\nAACgexbLvqioaOzQoUMvSqXSarFY3JmQkLBr//79z5iv4+Pjc6W5udmZiKi5udnZ3d29USQSGYiI\noqKi8h9++OEbfRcfAAB6hOO4u469e/fOXrJkyeaux1988cVzS5cu/ch8HaPRKJwwYYLax8fn8qBB\ng1pycnKmmC+vqqqShoWFnbnT/omIw8DAwMCwfljq7jsNEVkgEAg4S8uJiDIyMlYqFAqNWq1WVVRU\nBMbGxh4uKSkJd3JyauluW47jBN2tAwAA987iNI6fn1+tVqv173qs1Wr9JRJJjfk6BQUF4+bMmbOX\niCgwMLBCJpNVlZeXB/dNXAAA6A2LZR8REXHywoULQdXV1VK9Xm+/e/fuZ+Pj4w+YryOXy8vy8vJi\niIjq6uq8ysvLgwMCAir7MjQAAFipu3menJycKcOGDSsPDAy8mJGRkcZxHH3yySepn3zySSrHcVRf\nX+8xbdq0b0aOHFkSFhZ2Zvv27fO6tk1ISNjp4+Nz2d7e/pZEItF+9tlnSdbOM2FgYGBg3Pvg5UXb\n29sdxo4dWxgeHq4JCQkpfeutt1bz/YvozTAYDHYKhaJ42rRp3/CdxdrxyCOPVI8YMeK0QqEoHjNm\nTBHfeawdN27ccJ01a9a/5HL5+ZCQkNKffvrpUb4z9XSUlZUFKxSK4q7h7Ox8c/369a/wnaunIyMj\nIy00NPRcWFjYmcTExB0dHR0D+M5kzVi3bt2rYWFhZ4YPH3523bp1r/Kdp7uRlJT02eDBg+vML3Rp\nbGx0i4mJORwUFPRrbGzsoRs3brh2tx/eDqCtrc2R4zjq7OwURUZGnsjPz3+c71+qtWPt2rWvzZs3\nb/vTTz99gO8s1g6pVFrV2NjoxneO3o4FCxZs27Jly2KO+/1vqKmpyYXvTL0ZRqNR6O3tfeXSpUv+\nfGfpyaiqqpLKZLLKroKfO3fu7qysrIV85+rpOHPmTFhYWNiZ9vZ2B4PBYBcTE3P44sWLgXznsjSO\nHTsWderUKaV52b/xxhtrMjMz3+Q4jt59990VK1aseLe7/fB2uwRHR0cdEZFer7c3Go12bm5u1/nK\n0hs1NTWSnJycp5YsWfIpZ6NXFdlq7ps3b7rk5+dHLV68+DMiIpFIZHBxcbnJd67eyMvLiwkMDKzw\n9/fX8p2lJ5ydnZvFYnGnTqdzNBgMIp1O5+jn51fLd66eKisrk0dGRhY6ODh02NnZGSdMmHD0q6++\nmsl3Lkvu9HmlAwcOxC9cuHAbEdHChQu3ZWdnT+9uP7yVvclkEioUCo2Xl1fdxIkT/yc0NLSUryy9\nsXz58g/ee++9N4RCoYnvLL0hEAi4mJiYvIiIiJObN29O4TuPNaqqqmSenp71SUlJW0eNGnUqJSVl\ns06nc+Q7V2/s2rUrYd68eTv4ztFTbm5u119//fW1Q4YMueTr63vZ1dW1KSYmJo/vXD0VFhZ2Nj8/\nP+r69etuOp3O8bvvvptaU1Mj4TuXterq6ry8vLzqiIi8vLzq6urqvLrbhreyFwqFJo1Go6ipqZEc\nO3bsCbVareIri7W+/fbbaYMHD76mVCqLbfXs+Pjx4+OLi4uVBw8enPLxxx+/lJ+fH8V3pp4yGAyi\nU6dOjfr73//+/06dOjVq4MCBbe++++5bfOeyll6vt//mm2+e7rp02RZUVFQErlu3bll1dbX08uXL\nvq2trYO2b98+n+9cPSWXy8tWrFiROWnSpENTpkw5qFQqi231hK2LQCDgevKZKN7veuni4nJz6tSp\n3508eTKC7yw9VVBQMO7AgQPxMpmsKjExceeRI0eiFyxY8Dnfuazh4+NzhYjI09OzfsaMGV8XFRWN\n5TtTT0kkkhqJRFIzZsyYn4mIZs+e/a9Tp06N4juXtQ4ePDhl9OjRv3h6etbznaWnTp48GTFu3LiC\nrtuizJw586uCgoJxfOeyxuLFiz87efJkxNGjRye4uro2BQcHl/OdyVpeXl51V69e9SYiunLlis/g\nwYOvdbcNL2Xf0NDg0dTU5EpE1N7e/tDhw4djlUplMR9ZeiMjI2OlVqv1r6qqku3atSshOjr6yOef\nf76A71w9pdPpHFtaWpyIiNra2gYeOnRoki3dmdTb2/uqv7+/9tdffx1G9Pu89/Dhw8/xnctaO3fu\nTExMTNzJdw5ryOXyshMnTjza3t7+EMdxgry8vBhbm4K9du3aYCKiS5cuDfn6669n2NI0Wpf4+PgD\n27ZtW0hEtG3btoXTp0/P7nYjPt5dPn369AilUnkqPDxcM2LEiNNr1qx5g+93vHs71Gr1BFu7Gqey\nslIWHh6uCQ8P1wwfPvxs1+cnbGloNJrwiIiIn0eOHFkyY8aMr2ztapzW1taB7u7uDc3NzU58Z7F2\nZGZmvtl16eWCBQu26fV6Md+ZrBlRUVHHQkNDz4WHh2uOHDkyke883Y2uzyuJxWJ91+eVGhsb3Z58\n8sk8ay69FHBct1M9AABg43ifswcAgL6HsgcAYADKHgCAASh7AAAGoOwBABiAsgcAYMD/B98y8zIH\na4xbAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1081c2f50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1081ad110>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 12.1 s, sys: 419 ms, total: 12.5 s\n",
      "Wall time: 24.5 s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "params = {\"ntrees\": randint(30,35),\n",
    "          \"max_depth\": randint(5,8),\n",
    "          \"mtries\": randint(4,6),}\n",
    "\n",
    "custom_cv = H2OKFold(fr, n_folds=5, seed=42)           # In small datasets, the fold size can have a big\n",
    "                                                       # impact on the std of the resulting scores. More\n",
    "random_search = RandomizedSearchCV(model, params,      # folds --> Less examples per fold --> higher \n",
    "                                   n_iter=5,           # variation per sample\n",
    "                                   scoring=scorer, \n",
    "                                   cv=custom_cv, \n",
    "                                   random_state=43, \n",
    "                                   n_jobs=1)       \n",
    "\n",
    "random_search.fit(fr[x], fr[y])\n",
    "\n",
    "print(\"Best R^2:\", random_search.best_score_, \"\\n\")\n",
    "print(\"Best params:\", random_search.best_params_)\n",
    "\n",
    "report_grid_score_detail(random_search)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Transformations"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Rule of machine learning: Don't use your testing data to inform your training data. Unfortunately, this happens all the time when preparing a dataset for the final model. But on smaller datasets, you must be especially careful."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "At the moment, there are no classes for managing data transformations. On the one hand, this requires the user to tote around some extra state, but on the other, it allows the user to be more explicit about transforming H2OFrames.\n",
    "\n",
    "Basic steps:\n",
    "\n",
    "0. Remove the response variable from transformations.\n",
    "1. Import transformer\n",
    "2. Define transformer\n",
    "3. Fit train data to transformer\n",
    "4. Transform test and train data\n",
    "5. Re-attach the response variable."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First let's normalize the data using the means and standard deviations of the training data.\n",
    "Then let's perform a principal component analysis on the training data and select the top 5 components.\n",
    "Using these components, let's use them to reduce the train and test design matrices."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from h2o.transforms.preprocessing import H2OScaler\n",
    "from h2o.estimators.pca import H2OPrincipalComponentAnalysisEstimator as H2OPCA"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Normalize Data: Use the means and standard deviations from the training data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_train = train.pop(\"Median_value\")\n",
    "y_test  = test.pop(\"Median_value\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "norm = H2OScaler()\n",
    "norm.fit(train)\n",
    "X_train_norm = norm.transform(train)\n",
    "X_test_norm  = norm.transform(test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(122, 13)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<tr><th style=\"text-align: right;\">    CRIM</th><th style=\"text-align: right;\">      ZN</th><th style=\"text-align: right;\">       B</th><th style=\"text-align: right;\">    LSTAT</th><th style=\"text-align: right;\">      AGE</th><th style=\"text-align: right;\">     TAX</th><th style=\"text-align: right;\">     RAD</th><th style=\"text-align: right;\">      CHAS</th><th style=\"text-align: right;\">        NOX</th><th style=\"text-align: right;\">       RM</th><th style=\"text-align: right;\">   INDUS</th><th style=\"text-align: right;\">  PTRATIO</th><th style=\"text-align: right;\">        DIS</th></tr>\n",
       "<tr><td style=\"text-align: right;\">-24.7362</td><td style=\"text-align: right;\">-246.063</td><td style=\"text-align: right;\"> 3478.06</td><td style=\"text-align: right;\">-52.4412 </td><td style=\"text-align: right;\"> -413.735</td><td style=\"text-align: right;\">-30080.2</td><td style=\"text-align: right;\">-51.9628</td><td style=\"text-align: right;\">-0.0148904</td><td style=\"text-align: right;\">-0.011189  </td><td style=\"text-align: right;\"> 0.630504</td><td style=\"text-align: right;\">-63.7738</td><td style=\"text-align: right;\"> 0.684709</td><td style=\"text-align: right;\"> 4.8237    </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-23.6596</td><td style=\"text-align: right;\">  36.577</td><td style=\"text-align: right;\"> 2566.04</td><td style=\"text-align: right;\">126.336  </td><td style=\"text-align: right;\">  883.755</td><td style=\"text-align: right;\">-15288.4</td><td style=\"text-align: right;\">-34.9094</td><td style=\"text-align: right;\">-0.0148904</td><td style=\"text-align: right;\">-0.00359264</td><td style=\"text-align: right;\">-0.476113</td><td style=\"text-align: right;\">-23.6871</td><td style=\"text-align: right;\">-7.11246 </td><td style=\"text-align: right;\"> 4.86543   </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-24.3696</td><td style=\"text-align: right;\">  36.577</td><td style=\"text-align: right;\"> 3478.06</td><td style=\"text-align: right;\">  5.2618 </td><td style=\"text-align: right;\">  399.321</td><td style=\"text-align: right;\">-15288.4</td><td style=\"text-align: right;\">-34.9094</td><td style=\"text-align: right;\">-0.0148904</td><td style=\"text-align: right;\">-0.00359264</td><td style=\"text-align: right;\">-0.200189</td><td style=\"text-align: right;\">-23.6871</td><td style=\"text-align: right;\">-7.11246 </td><td style=\"text-align: right;\"> 5.16867   </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-24.549 </td><td style=\"text-align: right;\">  36.577</td><td style=\"text-align: right;\"> 2909.71</td><td style=\"text-align: right;\"> 22.9942 </td><td style=\"text-align: right;\"> -844.343</td><td style=\"text-align: right;\">-15288.4</td><td style=\"text-align: right;\">-34.9094</td><td style=\"text-align: right;\">-0.0148904</td><td style=\"text-align: right;\">-0.00359264</td><td style=\"text-align: right;\">-0.287784</td><td style=\"text-align: right;\">-23.6871</td><td style=\"text-align: right;\">-7.11246 </td><td style=\"text-align: right;\"> 3.54176   </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-20.4906</td><td style=\"text-align: right;\">-246.063</td><td style=\"text-align: right;\"> 3478.06</td><td style=\"text-align: right;\">-31.1478 </td><td style=\"text-align: right;\"> -198.431</td><td style=\"text-align: right;\">-15953.2</td><td style=\"text-align: right;\">-43.4361</td><td style=\"text-align: right;\">-0.0148904</td><td style=\"text-align: right;\">-0.0019813 </td><td style=\"text-align: right;\">-0.243987</td><td style=\"text-align: right;\">-21.7849</td><td style=\"text-align: right;\"> 5.80856 </td><td style=\"text-align: right;\"> 1.98279   </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-15.927 </td><td style=\"text-align: right;\">-246.063</td><td style=\"text-align: right;\"> 3478.06</td><td style=\"text-align: right;\"> 44.869  </td><td style=\"text-align: right;\">  648.62 </td><td style=\"text-align: right;\">-15953.2</td><td style=\"text-align: right;\">-43.4361</td><td style=\"text-align: right;\">-0.0148904</td><td style=\"text-align: right;\">-0.0019813 </td><td style=\"text-align: right;\">-0.103105</td><td style=\"text-align: right;\">-21.7849</td><td style=\"text-align: right;\"> 5.80856 </td><td style=\"text-align: right;\"> 0.450669  </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-19.5782</td><td style=\"text-align: right;\">-246.063</td><td style=\"text-align: right;\"> 3249.84</td><td style=\"text-align: right;\"> 27.282  </td><td style=\"text-align: right;\">  716.611</td><td style=\"text-align: right;\">-15953.2</td><td style=\"text-align: right;\">-43.4361</td><td style=\"text-align: right;\">-0.0148904</td><td style=\"text-align: right;\">-0.0019813 </td><td style=\"text-align: right;\">-0.262235</td><td style=\"text-align: right;\">-21.7849</td><td style=\"text-align: right;\"> 5.80856 </td><td style=\"text-align: right;\"> 1.3371    </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-19.4061</td><td style=\"text-align: right;\">-246.063</td><td style=\"text-align: right;\"> 2682.37</td><td style=\"text-align: right;\">  1.84613</td><td style=\"text-align: right;\">  725.11 </td><td style=\"text-align: right;\">-15953.2</td><td style=\"text-align: right;\">-43.4361</td><td style=\"text-align: right;\">-0.0148904</td><td style=\"text-align: right;\">-0.0019813 </td><td style=\"text-align: right;\"> 0.154571</td><td style=\"text-align: right;\">-21.7849</td><td style=\"text-align: right;\"> 5.80856 </td><td style=\"text-align: right;\"> 1.45265   </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-13.047 </td><td style=\"text-align: right;\">-246.063</td><td style=\"text-align: right;\">-9717.44</td><td style=\"text-align: right;\"> 56.6422 </td><td style=\"text-align: right;\">  795.933</td><td style=\"text-align: right;\">-15953.2</td><td style=\"text-align: right;\">-43.4361</td><td style=\"text-align: right;\">-0.0148904</td><td style=\"text-align: right;\">-0.0019813 </td><td style=\"text-align: right;\">-0.136683</td><td style=\"text-align: right;\">-21.7849</td><td style=\"text-align: right;\"> 5.80856 </td><td style=\"text-align: right;\">-0.00460617</td></tr>\n",
       "<tr><td style=\"text-align: right;\">-23.9336</td><td style=\"text-align: right;\">-246.063</td><td style=\"text-align: right;\"> 3169.91</td><td style=\"text-align: right;\">-17.5578 </td><td style=\"text-align: right;\">-1093.64 </td><td style=\"text-align: right;\">-20606.8</td><td style=\"text-align: right;\">-34.9094</td><td style=\"text-align: right;\">-0.0148904</td><td style=\"text-align: right;\">-0.00647003</td><td style=\"text-align: right;\">-0.231577</td><td style=\"text-align: right;\">-37.1433</td><td style=\"text-align: right;\"> 1.79859 </td><td style=\"text-align: right;\"> 0.178888  </td></tr>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": []
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(X_test_norm.shape)\n",
    "X_test_norm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Then, we can apply PCA and keep the top 5 components. A user warning is expected here."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Python/2.7/site-packages/h2o/transforms/decomposition.py:61: UserWarning: \n",
      "\n",
      "\t`fit` is not recommended outside of the sklearn framework. Use `train` instead.\n",
      "  return super(H2OPCA, self).fit(X)\n"
     ]
    }
   ],
   "source": [
    "pca = H2OPCA(k=5)\n",
    "pca.fit(X_train_norm)\n",
    "X_train_norm_pca = pca.transform(X_train_norm)\n",
    "X_test_norm_pca  = pca.transform(X_test_norm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# prop of variance explained by top 5 components?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(122, 5)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<tr><th style=\"text-align: right;\">     PC1</th><th style=\"text-align: right;\">       PC2</th><th style=\"text-align: right;\">     PC3</th><th style=\"text-align: right;\">      PC4</th><th style=\"text-align: right;\">      PC5</th></tr>\n",
       "<tr><td style=\"text-align: right;\">-30275.3</td><td style=\"text-align: right;\">  -625.604</td><td style=\"text-align: right;\"> 190.44 </td><td style=\"text-align: right;\"> 369.211 </td><td style=\"text-align: right;\">12.3892  </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-15481  </td><td style=\"text-align: right;\">   465.946</td><td style=\"text-align: right;\">1014.83 </td><td style=\"text-align: right;\">-446.059 </td><td style=\"text-align: right;\">38.3513  </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-15611.4</td><td style=\"text-align: right;\">  1372.84 </td><td style=\"text-align: right;\"> 586.132</td><td style=\"text-align: right;\">-231.06  </td><td style=\"text-align: right;\">-0.387572</td></tr>\n",
       "<tr><td style=\"text-align: right;\">-15551.9</td><td style=\"text-align: right;\">   817.878</td><td style=\"text-align: right;\">-530.932</td><td style=\"text-align: right;\"> 323.576 </td><td style=\"text-align: right;\">21.2814  </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-16276.8</td><td style=\"text-align: right;\">  1286.24 </td><td style=\"text-align: right;\"> 185.615</td><td style=\"text-align: right;\"> 287.705 </td><td style=\"text-align: right;\">-4.8135  </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-16264.8</td><td style=\"text-align: right;\">  1280.6  </td><td style=\"text-align: right;\"> 945.465</td><td style=\"text-align: right;\"> -89.9208</td><td style=\"text-align: right;\">17.0235  </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-16233  </td><td style=\"text-align: right;\">  1054.06 </td><td style=\"text-align: right;\">1003.81 </td><td style=\"text-align: right;\">-119.775 </td><td style=\"text-align: right;\"> 5.92804 </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-16156.1</td><td style=\"text-align: right;\">   491.806</td><td style=\"text-align: right;\">1005.79 </td><td style=\"text-align: right;\">-122.634 </td><td style=\"text-align: right;\">-4.7376  </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-14477.2</td><td style=\"text-align: right;\">-11794    </td><td style=\"text-align: right;\"> 962.697</td><td style=\"text-align: right;\">-136.698 </td><td style=\"text-align: right;\">-1.80573 </td></tr>\n",
       "<tr><td style=\"text-align: right;\">-20857.9</td><td style=\"text-align: right;\">   356.531</td><td style=\"text-align: right;\">-552.38 </td><td style=\"text-align: right;\"> 682.064 </td><td style=\"text-align: right;\">21.0776  </td></tr>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": []
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(X_test_norm_pca.shape)\n",
    "X_test_norm_pca[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "model = H2ORandomForestEstimator(seed=42)\n",
    "model.train(x=X_train_norm_pca.names, y=y_train.names, training_frame=X_train_norm_pca.cbind(y_train))\n",
    "y_hat  = model.predict(X_test_norm_pca)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5344823408872756"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "h2o_r2_score(y_test,y_hat)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Although this is MUCH simpler than keeping track of all of these transformations manually, it gets to be somewhat of a burden when you want to chain together multiple transformers."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Pipelines"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\"Tranformers unite!\"\n",
    "\n",
    "If your raw data is a mess and you have to perform several transformations before using it, use a pipeline to keep things simple.\n",
    "\n",
    "Steps:\n",
    "\n",
    "1. Import Pipeline, transformers, and model\n",
    "2. Define pipeline. The first and only argument is a *list* of *tuples* where the first element of each tuple is a name you give the step and the second element is a defined transformer. The last step is optionally an estimator class (like a RandomForest).\n",
    "3. Fit the training data to pipeline\n",
    "4. Either transform or predict the testing data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from h2o.transforms.preprocessing import H2OScaler\n",
    "from h2o.estimators.pca import H2OPrincipalComponentAnalysisEstimator as H2OPCA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4977863701713895"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.pipeline import Pipeline                # Import Pipeline <other imports not shown>\n",
    "model = H2ORandomForestEstimator(seed=42)\n",
    "pipe = Pipeline([(\"standardize\", H2OScaler()),       # Define pipeline as a series of steps\n",
    "                 (\"pca\", H2OPCA(k=5)),\n",
    "                 (\"rf\", model)])                     # Notice the last step is an estimator\n",
    "\n",
    "pipe.fit(train, y_train)                             # Fit training data\n",
    "y_hat = pipe.predict(test)                           # Predict testing data (due to last step being an estimator)\n",
    "h2o_r2_score(y_test, y_hat)                          # Notice the final score is identical to before"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This is so much easier!!!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "But, wait a second, we did worse after applying these transformations! We might wonder how different hyperparameters for the transformations impact the final score."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Combining randomized grid search and pipelines\n",
    "\"Yo dawg, I heard you like models, so I put models in your models to model models.\"\n",
    "\n",
    "Steps:\n",
    "\n",
    "1. Import Pipeline, grid search, transformers, and estimators <Not shown below>\n",
    "2. Define pipeline\n",
    "3. Define parameters to test in the form: \"(Step name)__(argument name)\" A double underscore separates the two words.\n",
    "4. Define grid search\n",
    "5. Fit to grid search"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nzGQySdu0aXOz6nZr6M/a5ASsoz9zc3NVu3fvDpkxY8baB+Wxlv58WE7AOvoTsJzDWvrzYX31qH1p\nFc/ekUgkwrFjxwb6+PicCQkJ2Z2RkdFDzDw5OTkeaWlpfoGBgclV38/Ly1Oq1Wq9eV2lUuWab0YT\nQ005raU/KysrHXx9fU8/8cQTV4YMGZLUo0ePjKrbraU/H5bTWvrzrbfe+mz58uV/d3BwqHzQdmvp\nz4fltJb+lEgkwvDhw/f7+/uf/Oqrr2ZW324N/fmwjHXpS4sXcptK3759U/V6vVqhUBTv2bPn2bCw\nsHjzrJ+mZjAYnMPDw7etWrXqTWdnZ0P17dX/qj7KvQwNyVJOa+lPBweHytOnT/vevn3bZeTIkXt1\nOl1wcHCwrmoba+jPh+W0hv788ccfn2/Xrt1VPz+/NJ1OF1xTO7H7szY5raE/AeDo0aODOnTokH/t\n2rW2zzzzzE/e3t7ng4KCjlRtI3Z/PixjXfrSKs70W7Zsecf8T+xnn312T0VFhfzmzZttmjpHRUWF\nfNy4cdsnTZq0KSwsLL769ur3LeTm5qqUSmVe06Z8eE5r6U8zFxeX288999yukydP+ld931r606ym\nnNbQn8eOHRu4c+fO0C5dumS//PLLWw4ePDh0ypQpG6q2sYb+rE1Oa+hPAOjQoUM+ALRt2/baCy+8\n8L151qGZNfTnwzLWqS+b6oJEdna2R00Xcv/8888nKisrJYIgIDk5uX/nzp1zmvqCSWVlpWTy5Mkb\nZs+e/VltLuz8/PPPT4pxYac2Oa2hP69du+Z+69at1oIgoLi42DEoKOjw/v37h1lbf9YmpzX0Z9VF\np9M9/aBZMdbQn7XJaQ39WVRUpCgsLGwpCAIMBoPTwIEDj+7du3eENfVnbTLWpS+bZHjn5Zdf3nLo\n0KGnr1+/7q5Wq/ULFy78qKKiQg7cneu/bdu28H//+9+vyWQyo0KhKN66dWtEU+Sq6ujRo4M2bdo0\nqU+fPul+fn5pAPDJJ5+8f+nSpU7mnCEhIbt3794d4unpecHJyalIjPsOapPTGvozPz+/w9SpU7+p\nrKx0qKysdJg8efLGYcOGHah6j4c19GdtclpDf1ZnHmawtv6s7kE5raE/r1y58sQLL7zwPXD3kTET\nJ06MHTFixD5r6s/aZKxLX0oEQZQhaSIiEoFVjOkTEVHTYNEnIrIjLPpERHaERZ+IyI6w6BMR2REW\nfSIiO/L/AUuP6fh1zud5AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x107fb8450>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAEICAYAAAC+iFRkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlYE+faP/BvIGEJCCKoKEGCASUsBhRFbTlFSwW1Au64\nL6hUa1/psVXx1FZrXdDjWz1iW2rdcCm02oqtipZiKm6gAqIiCgg1IFpFRCFgSJjfH5q+/DgVEiyM\nce7PdT3XlZl5ZvIdbG/HZ54ZeAzDgBBCyKvNiO0AhBBCWh8Ve0II4QAq9oQQwgFU7AkhhAOo2BNC\nCAdQsSeEEA6gYk9Ydf369Z7e3t7ZVlZWj2JjY+eznefvYGRkVH/z5s3urXFssVhc/Ouvv77ZGscm\nrzY+2wEIt61bt27Rm2+++Wt2drY321leNtOnT9/p6OioWLly5TLtOh6Px/B4PHo4huiNruwJa9Rq\nNf/33393cnd3z2U7CyGvOir2pE2JxeLidevWLZLJZJdMTExUcrk8YP78+bFWVlaPCgoKXPQ93vTp\n03fOmzfvi2HDhh1p167dY39//7Q7d+7YL1iwYJONjU2FVCq91vBfDWvXrl3i4uJSYGVl9cjDw+Pq\nwYMHw7Tb5s6d++WYMWP2a5cXL14cExgYmNJchvXr13/YtWvX2yKRqGT79u0zG2578uSJ6QcffPBv\nJyen3+3t7e/MnTv3y9raWjMAkMvlASKRqGTNmjXRHTt2vOfs7Fy0b9++iQDw9ddfz9m3b9/EdevW\nLWrXrt3j0NDQJO0xs7KyfGQy2aX27ds/DA8PT3jy5Impvj83wkEMw1Cj1mbNycmp2MfHJ7OkpMSh\npqbGLCAg4MS2bdtmtvR406ZN22lnZ3cvMzPTp7a21nTw4MG/Ojk5Fe/evXtyfX0976OPPlo5aNCg\nVG3/77//fkxZWZk9wzBITEwcZ2FhUaVdViqV5j169Li+c+fOaSdPnvS3s7O7V1pa2rWp7z969Ghw\n586d71y9etW9urpaOGHChH08Hq++sLCwO8MwiIqK+jw0NPRgRUVF+8ePH1uOGDHiUHR09GqGYXDi\nxIkAPp9ft3Dhwn+rVCrBb7/99g8LC4uqGzduuDIMg+nTp+9YtmzZp41/fn5+fufKysrsHzx4YCOV\nSnO/+uqrSLb/XKm9/I31ANS41cRicdGOHTuma5cDAgJOfPPNNxEtPd706dN3zJkzJ067vHnz5vnu\n7u5Xtcs5OTle7du3r3je/t7e3llJSUkh2uX09PR+NjY2D5ycnIoTEhLGN/f9M2bM2K4t3gzD4MaN\nG67aYl9fX8+zsLCo0hZ+hmFw5syZAc7OzjcZ5v+KvVKpNNduHzduXOLKlSs/Ypinf5F99NFHKxv/\n/Pbu3TtRu7xo0aKYd95550u2/1ypvfyNbtCSNufo6KhouPyiNxw7der0h/azmZlZbcNlc3Pzmqqq\nKkvtcnx8/NTPP//8/eLiYjEAVFVVWZaXl9tqt/fr1y+je/fuN+/fv283duzY75v77rKysi59+/Y9\nr13u1q3bLe3ne/fudVQqlcI+ffpc1K5jGIZXX1//5/CpjY1Nhbm5eY122cnJ6feysrIuwPN/Lvb2\n9ncant/t27e7NpeTEBqzJ22Ordkkv//+u9OcOXO+3rJly7sPHjzoUFFRYePp6XmFYRiets+WLVve\nValUJl27dr29bt26Rc0ds0uXLmW3bt3qpl1u+NnOzu6+ubl5TW5urntFRYVNRUWFzcOHD9s/evTI\nStunoqLCRqlUChtm7Nq1621At58TzcwhuqJiT1jXsNi25r7V1dUWPB6PsbOzu19fX2+0Y8eOGVeu\nXPHUbr9x40aPZcuWrdy7d++k+Pj4qevWrVt06dIlWVPHHDdu3Hc7d+6cfu3aNalSqRSuWLHiE+02\nIyOj+tmzZ2+NioraeO/evY4AUFpa6nD8+PEhDY/xySefrKirqxOkpaX5Hz58eLj2XxSdO3e+29x8\n/Rf52RFuoWJPWPciV6eN553/1Tx07bK7u3vuwoULNwwYMOCsvb39nStXrni+/vrrpwBAo9EYT5ky\nZfeSJUvWenl5XXZxcSlYvXr10ilTpuyuq6sTPO/7g4ODk6OiojYOHjw4tUePHjfefPPNXxt+f0xM\nzGIXF5eC/v37n7O2tq586623frlx40YP7XZ7e/s7NjY2FV27dr09ZcqU3XFxcZE9evS4AQARERHb\ncnNz3W1sbCpGjRr1gy7nT8jz8BiG/jshhA1yuTxgypQpuxUKhSPbWcirr9kr++Tk5GA3N7c8V1fX\n/JiYmMXP63f+/Pm+fD5ffeDAgdH67ksIIaSVNTVVR61WG0skkoKioiKxSqUSyGSy7NzcXOlf9Rs0\naFDq8OHDf96/f/9offalRk3b3N3dr1paWj5u3JydnW/+1fp9+/ZNaItcq1atWvpX3z9s2LDDL3Lc\nEydOBDg6Ot5i++dOjRutyamXGRkZ/VxcXArEYnExAISHhyckJSWFSqXSaw37bd68+b0xY8bsP3/+\nfF999yVE6+rVqx5sZ/grS5cuXb106dLVf/dxAwIC5A1n7xDSmpos9qWlpQ4N50SLRKKS9PR0v8Z9\nkpKSQlNTUwefP3++r/ZmkS770o0lQghpGUbPmVhNjtnrUoyjoqI2rl27dgmPx2MYhuFpA+hayNn+\np82LtE8++YT1DJSf/RxczG/I2V+F/C3R5JW9g4NDacOZAgqFwlEkEpU07HPx4sU+4eHhCQBw//59\nu6NHjw4VCAR1uuxLCCGkbTRZ7H19fS/k5+e7FhcXi7t27Xo7MTFx/LfffjuhYZ+GD33MmDFjx4gR\nI34KCQk5pFar+c3tSwghpG00Wez5fL46NjZ2flBQ0DGNRmMcERGxTSqVXouLi4sEgMjIyDh99/27\nT4BNAQEBbEd4IZSfXYac35CzA4afvyVYfajq2Tg/a99PCCGGiMfjgfk7b9ASQgh5NVCxJ4QQDqBi\nTwghHEDFnhBCOICKPSGEcAAVe0II4QAq9oQQwgFU7AkhhAOo2BNCCAdQsSeEEA6gYk8IIRxAxZ4Q\nQjiAij0hhHAAFXtCCOEAKvaEEMIBVOwJIYQDqNgTQggHULEnhBAOoGJPCCEcQMWeEEI4gIo9IYRw\nABV7QgjhACr2hBDCAc0W++Tk5GA3N7c8V1fX/JiYmMWNtyclJYXKZLJLPj4+WX369LmYmpo6WLtt\nzZo10R4eHle9vLwuT5w4cd+TJ09M/+4TIIQQogOGYZ7b1Gq1sUQiKSgqKhKrVCqBTCbLzs3NlTbs\nU1VVZaH9nJOT4yWRSAoYhkFRUZHY2dn5Zm1trSnDMBg3blzizp07pzXc9+nXE0II0cez2tlk/W7c\n+E39RZCRkdHPxcWlQCwWFwNAeHh4QlJSUqhUKr2m7WNhYVGt/VxVVWVpZ2d3HwCsrKweCQSCOqVS\nKTQ2NtYolUqhg4NDaePvWL58+Z+fAwICEBAQ8EJ/eRFCyKtGLpdDLpe/0DGaLPalpaUOjo6OCu2y\nSCQqSU9P92vc7+DBg2HR0dFrysrKuhw/fnwIAHTo0OHBwoULN3Tr1u2Wubl5TVBQ0LHAwMCUxvs2\nLPaEEEL+W+ML4RUrVuh9jCbH7Hk8HqPLQcLCwg5eu3ZN+tNPP42YMmXKbgAoLCyUbNy4Maq4uFh8\n+/btrlVVVZZ79+6dpHdCQgghL6zJYu/g4FCqUCgctcsKhcJRJBKVPK+/v79/mlqt5t+/f9/uwoUL\nvgMHDjxja2tbzufz1aNGjfrhzJkzA//O8IQQQnTTZLH39fW9kJ+f71pcXCxWqVQmiYmJ40NCQg41\n7FNYWChhGIYHAJmZmb0BwM7O7n7Pnj2vnzt3rn9NTY05wzC8lJSUQHd399zWOxVCSFvJzMxEQkIC\nLl++zHYUoqMmx+z5fL46NjZ2flBQ0DGNRmMcERGxTSqVXouLi4sEgMjIyLgDBw6Mjo+PnyoQCOos\nLS2rEhISwgHA29s7e+rUqfG+vr4XjIyM6nv37p05Z86cr9vipAghreeTT1bh3//+CsbG/aFWv4/V\nq/+FqKj5bMcizeA9ncXD0pfzeAyb308I0c/Nmzfh6dkfNTVXAHQC8DtMTWUoKSmAnZ0d2/E4g8fj\nQTuioit6gpYQorPS0lKYmLjgaaEHACeYmHTBnTt32IxFdEDFnhCiM6lUCo2mAID82ZqfYGT0EM7O\nziymIrqgYk8I0ZmdnR1+/HEfrKzGwcSkPTp0eAdHj/4ACwsLtqORZtCYPSFEb/X19aioqICNjQ2M\njOiasa21ZMyeij0hhBgYukFLCCHkL1GxJ4QQDmjyoSpCCGmsvr4e+/btQ35+Pjw9PTFmzBjweHqN\nKBAWULEnhOiMYRiMHz8dR4/eQHX1EFhYrEJKyinExW1iOxppBt2gJYTo7MqVK/DzGwql8gYAcwCV\nMDPrjoKCHDg4OLAdjzPoBi0hpFVVVlZCIOiKp4UeAKzB59uisrKSzVhEB1TsCSE669WrFwSCMvB4\nXwG4DSOjdWjfngcXFxe2o5FmULEnhOisXbt2OHnyGHr12gNLS2/4+h7DyZPJMDExYTsaaQaN2RNC\niIGhMXtCCCF/iYo9IYRwABV7QgjhACr2hBDCAVTsCSGckp2djYEDgyCR+GDu3PdRW1vLdqQ2QbNx\nCCGcoVAo4OHhi8ePPwPgAzOzzzB8eDvs37+b7Wh6aclsHHo3DiGEM44dOwaNZgiA2QCA2to9SEqy\nQ339rlf+l7C82mdHCCENmJmZgceraLCmAsbGAk68tbPZYp+cnBzs5uaW5+rqmh8TE7O48fakpKRQ\nmUx2ycfHJ6tPnz4XU1NTB2u3PXz4sP2YMWP2S6XSa+7u7rnnzp3r/3efACGE6Co0NBS2toUQCOYA\n+AJCYTCWLFnCiWIPhmGe29RqtbFEIikoKioSq1QqgUwmy87NzZU27FNVVWWh/ZyTk+MlkUgKtMtT\np07dtW3btpkMw6Curo7/8OFD64b7Pv16QvRTXV3NjBs3nREKOzAdO4qZPXv2sh2JGJDy8nJm6dJl\nzJQpc5h9+75l6uvr2Y6kt2e1s8n63bg1OWafkZHRz8XFpUAsFhcDQHh4eEJSUlKoVCq9pu1jYWFR\nrf1cVVVlaWdndx8AKisrrdPS0vx37do1DQD4fL7a2tqaXo1HXticOQtw6NBj1NZehVL5O2bPHolu\n3Rzh7+/PdjRiADp06IBVqz5lO0aba7LYl5aWOjg6Oiq0yyKRqCQ9Pd2vcb+DBw+GRUdHrykrK+ty\n/PjxIQBQVFTk3LFjx3szZszYcenSJVmfPn0ubtq0aYFQKFQ23Hf58uV/fg4ICEBAQMALnhJ51R05\nchS1tWkA7AHYo7Z2Fo4f/4WKPdFJQUEBFi78GLdv/4FhwwKwbNkS8Pkv91wVuVwOuVz+Ygdp6rJ/\n//79o2fNmrVVu7x79+7J8+fP3/y8/idPnvTv0aPHdYZhcP78eV8+n1+XkZHRl2EYLFiwYOOyZcs+\nbdgfNIxDWsDJyZMBjjEAwwAMY2o6ntmwYQPbsYgBuHPnDmNj05UxMlrDAEcZoXAQM3PmPLZj6Q0t\nGMZp8gatg4NDqUKhcNQuKxQKR5FIVPK8/v7+/mlqtZpfXl5uKxKJSkQiUUnfvn3PA8CYMWP2Z2Zm\n9n6xv5oIAb74IgZC4WTw+Qthbj4aXbpcRkREBNuxiAE4fPgwVCp/1NcvARAMpfIA4uO3o76+nu1o\nra7JYu/r63shPz/ftbi4WKxSqUwSExPHh4SEHGrYp7CwUMI8m9yvLea2trbl9vb2dxwdHRU3btzo\nAQApKSmBHh4eV1vrRAh3DBs2DKdPH8dnn3XCv//9JnJyzsHa2prtWMQAGBsbA6hrsKYOPB6PE7Nx\nmhyo4vP56tjY2PlBQUHHNBqNcURExDapVHotLi4uEgAiIyPjDhw4MDo+Pn6qQCCos7S0rEpISAjX\n7r958+b3Jk2atFelUplIJJLCHTt2zGjtEyLc4O3tDW9vb7ZjEAMzYsQILFr0CZ48iYZa7Q2h8H8x\ne/Z8ThR7el0CIYRTSktLsWzZKpSU3MXw4YPw3nvzDO7p2Za8LoGKPSEsOHLkCM6ePQdHRxGmT59O\nv9aP6IWKPSEG4LPPYrBmzVYolRMhFJ6Fjw8PcvmRl376H3l5ULEn5CWnUqlgadkedXX5ABwAaGBp\n2Q/7969GUFAQ2/GIgaDfQUvIS66mpgZP/7fr8myNMXg8J1RW0sPlpHVRsSekDVlbW8PLqzf4/A8A\nlAL4DsBpvPbaaywnI686KvaEtLGjR/cjIOAmrKz6oGfPdfjll0NwcHBgOxZ5xdGYPSGEGBgasyeE\nEPKXqNgTQggHULEnhBAOoGJPSBurrKzE+PEz4ODgBj+/QFy5coXtSIQD6AYtIW3M3z8YGRkiqFTv\ng8c7BSur5bhx4xI6derEdjRiIOgGLSEvuUePHuHcuTSoVF8B8ADDRKK+vh9OnjzJdjTyiqNiT0gb\nMjU1BVAPoOLZGgbAHxAKheyFIpxAxZ6QNmRqaoqoqH/CwiIQwP/CzGwsnJ15CAwMZDsaecXRmD0h\nbYxhGCQkJOC3386he3cR5s9/l67siV7orZeEEMIBdIOWEELIX6JiTwghHEDFnhikmpoaZGZmoqCg\nADQUSEjzqNgTg1NYWAiJxAsBAdPQq9frmDx5Nurr69mORchLjYo9MTgTJ87B3btz8fjxZdTUFCIp\nKQf79u1jOxYhLzUq9sTgXL9+DfX1454tWaC6+m3k5l5jNZM+Hjx4gNDQiejY0Rne3v7IyspiOxLh\ngGaLfXJycrCbm1ueq6trfkxMzOLG25OSkkJlMtklHx+frD59+lxMTU0d3HC7RqMx9vHxyRoxYsRP\nf2dwwl09e0phZPT9s6VqWFgchru7lNVM+hg2bCySk9vj/v1fcOnSLAQEDMWdO3fYjkVedQzDPLep\n1WpjiURSUFRUJFapVAKZTJadm5srbdinqqrKQvs5JyfHSyKRFDTcvmHDhn9OnDhx74gRIw41Pv7T\nrydsUSqVjFKpZDuG3goKCpguXSSMlZUXY25uz0yYMJPRaDRsx9JJZWUlw+cLGUDNAAwDMEy7dqHM\nd999x3Y0YkCe1c4m63fj1uSVfUZGRj8XF5cCsVhcLBAI6sLDwxOSkpJCG/axsLCo1n6uqqqytLOz\nu69dLikpER05cmTYrFmzvmH0fACAtB6VSoWxY6eiXTsbtGtng8mTZ0OtVrMdS2cSiQSFhZdx4sRO\nXLp0Env3fgMjI8MYkfy/d+No/zepB8PchqWlJYupCBfwm9pYWlrq4OjoqNAui0SikvT0dL/G/Q4e\nPBgWHR29pqysrMvx48eHaNe///77n69fv/7DR48eWT3vO5YvX/7n54CAAAQEBOh5CkRfy5evxuHD\n96HRPABQjx9/DIVUugH/+td/jdK9tMzNzdG7d2+2Y+jN1NQUixdH4/PPB0GpnAJz87Po2dOc3o1D\nmiSXyyGXy1/oGE0Wex6Pp9ME5rCwsINhYWEH09LS/KdMmbI7Ly/P7fDhw8M7der0h4+PT5ZcLg94\n3r4Niz1pG7/+egY1Ne8DePo+FqVyHn79dTf+9S92c3HFZ599jN69PXHq1DmIxYGYM2cOBAIB27HI\nS6zxhfCKFSv0PkaTxd7BwaFUoVA4apcVCoWjSCQqeV5/f3//NLVazS8vL7c9c+bMwEOHDoUcOXJk\nWG1trdmjR4+spk6dGh8fHz9V75TkbyUWO+DixTPQaIYCAPj8M3B2dmA5FbeMGjUKo0aNYjsG4ZKm\nBvTr6ur43bt3LywqKhI/efLE5K9u0BYUFEjq6+t5DMPg4sWLvbt3717Y+DhyufyNt99++6fG60E3\naFmhUCgYe3tnpl27YKZdu0DGwcGVuXPnDtuxCCE6Qgtu0DZ5Zc/n89WxsbHzg4KCjmk0GuOIiIht\nUqn0WlxcXCQAREZGxh04cGB0fHz8VIFAUGdpaVmVkJAQ/lfH0nVIiLQ+kUiEvLwspKSkgMfj4a23\n3kK7du3YjkUIaUX0imNCCDEw9IpjQgghf4mKPSGEcAAVe0II4QAq9oQQwgFU7AkhhAOo2BNCCAdQ\nsScGR6PRYMWK1ZBK+2PAgCE4deoU25EIeenRPHticBYt+ghbtpyAUrkWwO8QCt/HuXOp8PLyYjsa\nIW2C5tkTTti+fTeUym0A/AFMRm3tTOzf/wPbsQh5qVGx5yCGYfDxxytha9sNdnZOWL16HQzpX1gm\nJqYAHv25bGRUCVNTE/YCEWIAqNhz0KZNW7Bhw4948OA4ysuPYNWqeHzzzQ62Y+ls+fJFEArHA/gS\nxsZL0K7dT5g2jV6mSkhTaMyegwYOHIqzZ+cBGPFsTSLefDMRKSmGMxSSlJSE7777GTY27bBoURS6\ndevGdiRC2kxLxuybfOsleTV16GANHu8mtH/P8ng3YWtrzW4oPYWGhiI0NLT5joQQAHRlz0mXL1/G\nwIFvorY2HIAaQuEPOH/+JHr06MF2NEKIDlpyZU/FnqNu3ryJ7777DjweD+Hh4XBycmI7EiFER1Ts\nCWcUFRVBLpfDysoKb7/9NkxNTdmOREiboWJPOOHUqVMIDh4JIAg83i1IJBqcPZsCc3NztqMR0ibo\noSrCCTNnLkB1dRyqq/egquo33LjRAdu2bWM7FiEvNSr2xODcu3cHgO+zJR5qa/vg9u07bEYi5KVH\nxZ4YHH//f8DE5DMAdQCKYG4ejzfe8Gc7FiEvNSr2xODs2vUF+vcvgZGRBUxMvPDZZ1EICgpiOxYh\nLzW6QUsMlkqlAp/Ph5ERXbMQbqHZOIQQwgGtMhsnOTk52M3NLc/V1TU/JiZmcePtSUlJoTKZ7JKP\nj09Wnz59Lqampg4GAIVC4Tho0KATHh4eVz09Pa/85z//+R99ghFCCPkbMQzz3KZWq40lEklBUVGR\nWKVSCWQyWXZubq60YZ+qqioL7eecnBwviURSwDAMysrK7LOysrwZhsHjx48te/Tocb3xvk+/nrDh\niy/iGBeXPkyPHr7M9u072I5DCNHDs9rZZP1u3Jp8EVpGRkY/FxeXArFYXAwA4eHhCUlJSaFSqfSa\nto+FhUW19nNVVZWlnZ3dfQCwt7e/Y29vfwcALC0tq6RS6bXbt293bbgvYcfOnfH44IN/Q6n8BoAG\n8+dHwMLCAuPGjWU7GiGklTRZ7EtLSx0cHR0V2mWRSFSSnp7u17jfwYMHw6Kjo9eUlZV1OX78+JDG\n24uLi8VZWVk+fn5+6Y23LV++/M/PAQEBCAgI0PMUiL62bk2AUhkD4B8AAKVyJb75JpGKPSEvKblc\nDrlc/kLHaLLY83g8ne6ehoWFHQwLCzuYlpbmP2XKlN3Xr1/vqd1WVVVlOWbMmP2bNm1aYGlpWdV4\n34bFnrQNS0tzAPcbrLn/bB0h5GXU+EJ4xYoVeh+jyWLv4OBQqlAoHLXLCoXCUSQSlTyvv7+/f5pa\nreaXl5fb2traltfV1QlGjx59YPLkyXvCwsIO6p2OtIrlyz/AqVMhUCrvAtDAwiIWH310jO1YhJBW\n1ORsHF9f3wv5+fmuxcXFYpVKZZKYmDg+JCTkUMM+hYWFEubZFKDMzMzeAGBra1vOMAwvIiJim7u7\ne25UVNTG1jsFoq8BAwbg1KnjmDevHO+99whnz6aid+/ebMcihLSiJq/s+Xy+OjY2dn5QUNAxjUZj\nHBERsU0qlV6Li4uLBIDIyMi4AwcOjI6Pj58qEAjqLC0tqxISEsIB4PTp06/t2bNncq9evXJ8fHyy\nAGDNmjXRwcHBya1/WqQ5Pj4+WL++J3g8Hr0tkugtOzsb+fn5cHd3h4eHB9txiA7ooSoOUqlUmDgx\nAklJ+8EwDMaPn4Rdu+LA59NvqSTNW7FiDdatiwWf7we1+izWrv0Y7703l+1YnEJP0BKdREd/gk2b\nzqOmZj+AegiFoVi6dAj+9a//emaOkP/PzZs34eHhh9raywDsARTD1NQbJSUFsLOzYzseZ9D77IlO\nUlPPoqbmPQBCAJZQKufh11/Psh2LGICSkhKYmrriaaEHADFMTLrgzh16xfTLjoo9B3XvLoKRURqA\nqwByweefgrOzA9uxiAFwd3eHWp0P4OSzNYfB41XA2dmZzVhEBzSMw0F5eXnw8hoItdocgAYmJmrk\n5Z2n/2GJTn755ReMHj0RKpUGQqEZfv55PwYOHMh2LE6hYRyik40bv4KRUSgABYBS8HiB2LJlK9ux\niIF46623UFFxBwrFddy/X0KF3kBQseegrKxcqFTj8PSP3xhPnozDxYtX2Y5FDIixsTE6duxokL9L\n4NixYxCJekIotMGQISPx4MEDtiO1CcP7kyIvTCZzg6npAQD1ADQwM/sB3t5StmMR0uquX7+OkSMn\norTUHzU1E5CaqsLIkZPZjtUmqNhz0Pr1K9GzZy4sLd1gYdEDnp4lWLnyI7ZjEdLqjh8/jtpaUwDV\nAMTQaK7j5MkUaDQatqO1OnqKhoOsra1x8eJJXL16FTweDx4eHjA2NmY7FiGtLj8/HwzjAmAfAB6A\nMQCk4PH0utdpkKjYcxSfz4dMJmM7BiFtSiqVgsf7A/83kcUeRkZ//jKlVxoN4xBCOCM4OBhC4a8A\nEgDkQSCYieDgUE78y5aKPSGEM5ydnZGS8hN69YpF584jMHZsOyQm7mA7Vpugh6oIIcTA0ENVbeiL\nL76CtbU9zMzaYezYaaipqWE7EiGEPBcV+xZITk7Ghx+uxaNHKXjy5Hf8/HMV3n33A7ZjEULIc1Gx\nb4Hk5BQolXMBeALogNraz3DkyHG2Y+mMYRh8/PFK2Np2g52dE1avXseJ2QiEcBlNvWyBTp1sYWKS\nC5VKuyYXtraG8y7vTZu2YMOGH6FUHgegwapV49Gxox1mz57JdjRCSCuhK/sWmDdvLrp2vQChMAym\npvMgFL6DL7+MYTuWzr777jCUyhUA3AB4QKlchsTEn9mORUib4Oq7cejKvgXat2+PS5fO4rvvvkN1\ndTWCg0+hZ8+ebMfSWYcO1uDxbkI7csPj3YStrTW7ofRUU1OD3NxcWFlZwcXFhRNPQJIXd/36dYwa\nNRlK5T4N0gQEAAASrklEQVQAPpDLP8HIkZPx229H2I7W6mjqJQddvnwZAwe+idracABqCIUHcP58\nGnr06MF2NJ0UFhbC3z8I1dVC1NXdQ1jYMOzZs9Ug38BI2lZcXBz++c8MKJXbnq15AiMjS6hUtQb1\nYBVNvSQ68fLywqVL57ByZVd89pkTcnIyDKbQA8DEiXNw9+48PHqUg5qaAhw6dAX79u1jOxYxADY2\nNjAyKgCgvcgsgJlZO05cKNCVPTE47dt3RWVlOgDHZ2s+xZIlT7BmzSo2YxEDoFKpMGBAIPLyzPHk\niQympnvxn/98hoiIGWxH00tLruxpzJ4YnB49euL8+dkA7gKwhJnZPXh40CuaSfNMTExw5swv2LNn\nD+7evYs33vgOr732Gtux2kSz/3ZJTk4OdnNzy3N1dc2PiYlZ3Hh7UlJSqEwmu+Tj45PVp0+fi6mp\nqYN13ZeQlvD0dAPwAEAcgP9BXV0Z3N3dWU5FDIWpqSkiIiKwdOlSzhR6AE8fsHleU6vVxhKJpKCo\nqEisUqkEMpksOzc3V9qwT1VVlYX2c05OjpdEIinQdd+nX0+IfmxtuzHAdQZgGIBheLwlzMcff8J2\nLELazLPa2WT9btyavLLPyMjo5+LiUiAWi4sFAkFdeHh4QlJSUmjDPhYWFtXaz1VVVZZ2dnb3dd2X\nkJYwNTUDUP7nMp9fDnNzM/YCEWIAmhyzLy0tdXB0dFRol0UiUUl6erpf434HDx4Mi46OXlNWVtbl\n+PHjQ/TZd/ny5X9+DggIQEBAQItOhHDHqlVL8e6746FU/hPGxr/Dyuoopk8/z3YsQlqNXC6HXC5/\noWM0Wex5PJ5OU2XCwsIOhoWFHUxLS/OfMmXK7ry8PDddAzQs9oToYvr0aejcuRMOHDgMG5t2iIo6\nB3t7e7ZjEdJqGl8Ir1ixQu9jNFnsHRwcShUKhXZ+GxQKhaNIJCp5Xn9/f/80tVrNf/DgQQeRSFSi\nz76E6GPo0KEYOnQo2zEIMRhNjtn7+vpeyM/Pdy0uLharVCqTxMTE8SEhIYca9iksLJQwz+Z7ZmZm\n9gYAW1vbcl32JYQQ0jaavLLn8/nq2NjY+UFBQcc0Go1xRETENqlUei0uLi4SACIjI+MOHDgwOj4+\nfqpAIKiztLSsSkhICG9q37Y4KUJedk+ePMGtW7fQqVMnWFsb1nuJiGGiJ2hb6Pbt2/jqq6/x6FE1\nxowJxeuvv852JGIgLly4gKCgMKhUJqirK8fnn6/H3Llz2I7FGQUFBVi48GPcvv0Hhg8fhI8+Wgw+\n37CeL23JE7RU7Fvg9u3b6NXLD5WVoVCru0Io3Iy9e79EWFgY29HIS45hGNjbO+OPP9YDGAugEELh\n60hP/wWenp5sx3vl3b17F1Jpb1RWvof6em8IhesQHi7Ftm1b2I6mF3oRWhuJi9v6rNDHAlgKpXIX\nPvxwJduxiAGoqKjAw4cVeFroAUACY2N/XL58mc1YnHH48GGoVP6or18CIBhK5QHEx29HfX0929Fa\nHRX7Fnj8uBpqdZcGa7pAqax+bn9CtNq3bw8TEwGA08/WlEOjSYdEImEzFmc8fY1xXYM1deDxeJz4\nfQhU7Ftg9OhQmJtvBpAMIAdC4XxMmDCa7VjEABgZGeH77/fAwiIM1taDYW7uiXffnYp+/fqxHY0T\nRowYAQuLi+DzowEkQigcgXnz5nOi2NOYfQslJSXhww9XQqmsRnj4KKxdu8LgbvIQ9pSVleHKlSsQ\niUSQSqVsx+GU0tJSLFu2CiUldzF8+CC89948g3ufPd2gJYQQDqD32RNCWp1KpUJs7Bbk5NxA375e\neOedSIP6lX5cRVf2hBCd1dfX4623QnH2rBo1NcMhFO5HcLAI+/fv5sS498uChnEIIa0qOzsbr78+\nGtXVeQAEAGpgZuaEvLzzcHJyYjseZ9A8e0JIq6qpqYGxcXs8LfQAYAZjY0vU1NSwGYvogIo9IURn\n3t7esLKqgrHxpwAuQSBYBJHIBi4uLmxHI82gYk8I0Zm5uTnOnEnB4MHZcHSchODgEvz22xGadmwA\naMyeEEIMDI3ZE0II+UtU7AkhhAOo2BNCCAdQsSeEEA6gW+gtdO/ePezcuRNVVdUYMeJt+Pr6sh2J\nEEKei2bjtMAff/yBXr38UFERgLq6rjAz24oDB3Zh6NChbEcjhHAAzcZpI19+GYcHD4ZApdoBhlmF\nmpodiIr6mO1YhBDyXFTsW6Ci4hHq6sQN1ojx+PEjtuIQQkizqNi3QFjYcAiFsQDSABTC3Px9jB4d\nwnYsQgh5Lhqzb6Fvv03AokUroFRWY+zYUfjPf9bBxMSE7ViEEA5olTH75OTkYDc3tzxXV9f8mJiY\nxY237927d5JMJrvUq1evnNdee+10Tk5OL+22NWvWRHt4eFz18vK6PHHixH1Pnjwx1Sfcy2zChHAo\nFNdQXn4LX321kQo9IeTlxjDMc5tarTaWSCQFRUVFYpVKJZDJZNm5ubnShn3OnDkz4OHDh9YMw+Do\n0aPBfn5+5xiGQVFRkdjZ2flmbW2tKcMwGDduXOLOnTunNdz36dcbplu3bjGLFkUz77zzP0xqairb\ncQghHPKsdjZZvxu3Jq/sMzIy+rm4uBSIxeJigUBQFx4enpCUlBTasM+AAQPOWltbVwKAn59feklJ\niQgArKysHgkEgjqlUilUq9V8pVIpdHBwKG2lv7PaVElJCWSy/tiwoRZffSXC8OGT8P33+9mORQgh\nz9XkQ1WlpaUOjo6OCu2ySCQqSU9P93te/23btkUMGzbsCAB06NDhwcKFCzd069btlrm5eU1QUNCx\nwMDAlMb7LF++/M/PAQEBCAgIaMFptK2vv/4Gjx6NhkbzvwCAmhofREcvwtixY1hORgh5Fcnlcsjl\n8hc6RpPFnsfj6Xz39MSJE4O2b98+8/Tp068BQGFhoWTjxo1RxcXFYmtr68qxY8d+v3fv3kmTJk3a\n23C/hsXeUFRVKaHRdGywphNqapSs5SGEvNoaXwivWLFC72M0OYzj4OBQqlAoHLXLCoXCUSQSlTTu\nl5OT02v27NlbDx06FGJjY1MBABcuXPAdOHDgGVtb23I+n68eNWrUD2fOnBmod8KX0Lhxo55NvfwJ\nwEUIhfMwZco4tmMRQshzNVnsfX19L+Tn57sWFxeLVSqVSWJi4viQkJBDDfvcunWr26hRo37Ys2fP\nZBcXlwLtejc3t7xz5871r6mpMWcYhpeSkhLo7u6e21on0pb69++P77/fAXf31XBymoEFCwKxatUn\nbMcihJDnanae/dGjR4dGRUVt1Gg0xhEREduio6PXxMXFRQJAZGRk3KxZs7758ccfR3br1u0WAAgE\ngrqMjIx+ALBu3bpFu3btmmZkZFTfu3fvzG+++WaWQCCo+/PLDXiePSGEsKUl8+zpoSpCCDEw9CI0\nQgghf4mKPSGEcAAVe0II4QAq9oQQwgFU7AkhhAOo2BNCCAdQsSeEEA6gYk8IIRxAxZ4QQjiAij0h\nhHAAFXtCCOEAKvaEEMIBVOwJIYQDqNgTQggHULEnhBAOoGJPCCEcQMWeEEI4gIo9IYRwABV7Qgjh\nACr2hBDCAVTsCSGEA6jYE0IIB1CxfwFyuZztCC+E8rPLkPMbcnbA8PO3RLPFPjk5OdjNzS3P1dU1\nPyYmZnHj7Xv37p0kk8ku9erVK+e11147nZOT00u77eHDh+3HjBmzXyqVXnN3d889d+5c/7/7BNhk\n6P/BUH52GXJ+Q84OGH7+luA3tVGj0RjPnz8/NiUlJdDBwaG0b9++50NCQg5JpdJr2j7du3e/efLk\nyX9YW1tXJicnB8+ZM+drbVFfsGDBpmHDhh3Zv3//GLVaza+urrZo7RMihBDy35q8ss/IyOjn4uJS\nIBaLiwUCQV14eHhCUlJSaMM+AwYMOGttbV0JAH5+fuklJSUiAKisrLROS0vznzlz5nYA4PP5am0/\nQgghbYxhmOe277//fsysWbO2apd37949ef78+Zuf13/9+vUfzJ49+2uGYZCVleXdr1+/9OnTp+/w\n8fHJnDVr1tbq6mphw/4AGGrUqFGjpn9rqnb/VWtyGIfH4zFNbW/oxIkTg7Zv3z7z9OnTrwGAWq3m\nZ2Zm9o6NjZ3ft2/f81FRURvXrl275NNPP/1Yuw/DMDxdj08IIaTlmhzGcXBwKFUoFI7aZYVC4SgS\niUoa98vJyek1e/bsrYcOHQqxsbGpAACRSFQiEolK+vbtex4AxowZsz8zM7P3330ChBBCmtdksff1\n9b2Qn5/vWlxcLFapVCaJiYnjQ0JCDjXsc+vWrW6jRo36Yc+ePZNdXFwKtOvt7e3vODo6Km7cuNED\nAFJSUgI9PDyuts5pEEIIaUqTwzh8Pl8dGxs7Pygo6JhGozGOiIjYJpVKr8XFxUUCQGRkZNynn376\ncUVFhc3cuXO/BACBQFCXkZHRDwA2b9783qRJk/aqVCoTiURSuGPHjhmtf0qEEEL+i76D/H9Hq6mp\nMevXr1+6TCbLlkqluUuWLFnDRo4XbWq12tjb2zvr7bff/ontLPo2JyenYi8vrxxvb++svn37ZrCd\nR99WUVHRfvTo0fvd3NyuSaXS3LNnz/ZnO5OuLS8vr6e3t3eWtllZWVVu2rTpf9jOpWtbvXp1tLu7\n+1VPT8/LEyZM2FdbW2vKdiZ92saNGxd4enpe9vDwuLJx48YFbOdprs2YMWN7p06d7np6el7Wrisv\nL+8QGBj4i6ur64233nrreEVFRfvmjsPaCWhn5tTV1fH9/PzOpaWlvc72D1XftmHDhn9OnDhx74gR\nIw6xnUXfJhaLi8rLyzuwnaOlberUqbu2bds2k2Ge/jf08OFDa7YztaRpNBoje3v7slu3bjmynUWX\nVlRUJHZ2dr6pLfDjxo1L3Llz5zS2c+naLl++7Onp6Xm5pqbGTK1WGwcGBv5SUFAgYTtXU+3kyZP+\nmZmZPg2L/YcffrguJiZmEcMwWLt27eLFixevbe44rL0uQSgUKgFApVKZaDQa4w4dOjxgK0tLlJSU\niI4cOTJs1qxZ3zAGOqvIUHO/Ss9wpKSkBEokkkJHR0cF21l0YWVl9UggENQplUqhWq3mK5VKoYOD\nQynbuXSVl5fn5ufnl25mZlZrbGyseeONN3774YcfRrGdqyn+/v5p2okvWocOHQqZNm3aLgCYNm3a\nroMHD4Y1dxzWin19fb2Rt7d3dufOne8OGjTohLu7ey5bWVri/fff/3z9+vUfGhkZ1bOdpSV4PB4T\nGBiY4uvre2Hr1q2z2c6jj6KiIueOHTvemzFjxo7evXtnzp49e6tSqRSynaslEhISwidOnLiP7Ry6\n6tChw4OFCxdu6Nat262uXbvebt++/cPAwMAUtnPpytPT80paWpr/gwcPOiiVSuHhw4eHax8ENSR3\n797t3Llz57sA0Llz57t3797t3Nw+rBV7IyOj+uzsbO+SkhLRyZMn/yGXywPYyqKvn3/++e1OnTr9\n4ePjk2WoV8enT59+LSsry+fo0aNDt2zZ8m5aWpo/25l0pX2GY968eV9kZmb2trCwqF67du0StnPp\nS6VSmfz0008jxo4d+z3bWXRVWFgo2bhxY1RxcbH49u3bXauqqiz37t07ie1cunJzc8tbvHhxzJAh\nQ44PHTr0qI+PT5ahXrBp8Xg8Rpdnolh/66W1tXXl8OHDD1+4cMGX7Sy6OnPmzMBDhw6FODs7F02Y\nMOHb1NTUwVOnTo1nO5c+unTpUgYAHTt2vDdy5MgftTOoDMGr8gzH0aNHh/bp0+dix44d77GdRVcX\nLlzwHThw4BlbW9tyPp+vHjVq1A9nzpwZyHYufcycOXP7hQsXfH/77bc32rdv/7Bnz57X2c6kr86d\nO9+9c+eOPQCUlZV16dSp0x/N7cNKsb9//77dw4cP2wNATU2N+S+//PKWj49PFhtZWmL16tVLFQqF\nY1FRkXNCQkL44MGDU+Pj46eynUtXSqVS+Pjx43YAUF1dbXH8+PEhXl5el9nOpatX5RmOb7/9dsKE\nCRO+ZTuHPtzc3PLOnTvXv6amxpxhGF5KSkqgoQ3B/vHHH52Ap88I/fjjjyMNaRhNKyQk5NCuXbum\nAcCuXbumhYWFHWx2JzbuLufk5Hj5+PhkymSybC8vr5x169Z9yPYd75Y2uVz+hqHNxrl586azTCbL\nlslk2R4eHldWr14dzXYmfVt2drbM19f3fK9evS6NHDnyB0ObjVNVVWVha2t7/9GjR+3YzqJvi4mJ\nWaSdejl16tRdKpVKwHYmfZq/v/9Jd3f3qzKZLDs1NXUQ23maa+Hh4d926dLltkAgUIlEIsX27dtn\nlJeXd3jzzTdT9Jl6yWMYnV9/QwghxECxPmZPCCGk9VGxJ4QQDqBiTwghHEDFnhBCOICKPSGEcAAV\ne0II4YD/B4RmHwbFD5x1AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108155e90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nUlJGh4eH7xQjS1vp2bNnBQDY2dn9Pn369K+1Vyh1BIbyHYqDBw9O9PPzO2VnZ/e72Fn0KTMz03/4\n8OHHunXrdk0qlWpmzJjx1bFjx4aLnUtfFi5c+FlmZqb/4cOHR3bt2vXmgAEDzomdSd+6d+9+5fLl\nyz0AoKKioqe9vf1vD1pHlLJfs2bNGwqFwrG4uLhvbGxs2OjRo1N27twZLkaWtqBUKs2qqqosAaCm\npsb80KFD4wYNGnRG7Fz6Yijfodi7d+/s2bNn7xU7h765ubnlnzhxYlhtba2pIAiS5OTksR4eHnli\n59KX3377zR648x2gr7/+enpHOw0HAMHBwYk7duyYDwA7duyYHxISEv/AlcT+pDk1NXVkR7sa58KF\nC329vb1zvL29czw9PX9Zs2bNSrEz6Xvk5OR4+/v7n/Ty8jo9ffr0rzra1TjV1dXm3bp1u1pZWWkp\ndpa2GOvXr39Ne+lleHj4jrq6OpnYmfQ1AgMDj3h4ePzq7e2dk5KSMkrsPK0dYWFhe3v27HlJJpPV\nyeVyxWeffbbg2rVrNmPGjEluyaWXEkFo9u1viIjoMcVfqiIiMgAseyIiA8CyJyIyACx7IiIDwLIn\nIjIALHsiIgPw/wBM/Cjdg1JDvQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1079c1f50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nwYJPRGQm/j9fu1JDDEYQdgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10655f050>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEICAYAAACzliQjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcVPX+P/DXMDMqyJKCijKDyICCCyOKohaKZmKmSK6k\nuSQat192s9titonWdetWmt5701JzKywtccUl5UouoIKS4oIIOuCOIAwDzML5/WHT5cuVYRiVI83r\n+Xh8Ho+Zcz7nzOucnDenz1lGIggCiIjIPjiIHYCIiOoPiz4RkR1h0ScisiMs+kREdoRFn4jIjrDo\nExHZERZ9IiI7wqJPj71vv/12clhYWPLDWl9cXFzchAkT1gHAlStXvF1cXEoEQZA8rPUTPc5Y9OmB\nVS2iDYFEIvnjjkRvb+8rJSUlLlWnNVSTJ0/+9sMPP/xY7Bz0eGPRpz81k8kkFTtDQ8F9ZR9Y9KlO\nFi5cOFOhUOS5uroWBwQEnNu5c+eQ+fPnz9q4ceNYFxeXkuDg4HQAWL169UsdO3bMdHV1LVapVNkr\nVqx42byOpKSkcIVCkff555//rVWrVjfatGlz9dtvv51snl9QUOAeGRm51c3N7W5oaGhKdna2qmqG\n119/fYm3t/cVNze3uyEhIcd//fXXp8zz4uLi4kaNGrVpwoQJ69zc3O6uWbNmUk5OTrt+/fr9x9XV\ntXjQoEF7bt++7WHun5ub6+Pg4FBZWVnpcOTIkd4uLi4l5takSZPydu3a5QBAZWWlw4IFC9718/O7\n6OHhcXvs2LEbCwsLm9m6H3/99den+vTpc7hZs2aF3t7eV9asWTMJACoqKhq/9dZb/2jbtu1lT0/P\n66+88sq/y8vLm9S231asWPHyd999N27RokXvuLi4lAwfPjwBAK5evdpm5MiRm1u2bHnT19f30tKl\nS1+ztK9s3R5qQARBYGOzqp07d66DUqm8cu3aNU9BEHD58mXv7Oxs37i4uNkTJkxYW7Xvjh07hly6\ndKmdIAj4z3/+09fJyak0LS0tWBAEHDhwIFwmkxlmz54dZzQapTt37nzWycmptKioyE0QBIwdOzZ+\n7Nix8TqdzvH06dOdvLy88sLCwg6a171+/frxd+7caWYymRw+++yzv3l6el6rqKhoJAgCZs+eHSeX\ny/UJCQmRgiCgrKysSa9evY68+eab/9Dr9fKDBw+Gubi4FJvz5uTk+EgkkkqTyeRQNb/BYJD169cv\n6b333vu7IAhYvHjx67179z6cn5/fRq/Xy2NjY7964YUXvrNlP+bm5rZ1cXEpjo+PH2s0GqUFBQXN\nT548qRYEATNmzPhi+PDhWwoLC58oKSlxHjZs2NZZs2bNs2a/TZ48efWHH3441/w5JpPJoVu3bic+\n/vjjDwwGg+zSpUvtfH19s3fv3j2opn0l9r8xtkffRA/A1nBaVlaWX8uWLW/s27fvab1eLzdPnz17\ndtyLL764ztKyUVFRPy9ZsuSvgnCveDk6OuqqFtqWLVveSElJ6Wk0GqVyuVx//vz59uZ577333t+f\neuqp5JrW3axZszsZGRldzFn69euXZJ53+fJlb5lMZtDpdI7maePGjdtgzltT0f/LX/7y72HDhm01\nvw8MDMz85ZdfBpjfX716tbVcLtdXX86aNm/evFkjRozYXH16ZWWlpGnTptrs7Gxf87TDhw/3bteu\n3aXa9psg3Cv6H3zwwcfmeUePHg319va+XP2zX3rppVX321ds9tFkYv+fBjUcfn5+FxcvXjwjLi4u\n7syZM50iIiJ2f/7553+7X99du3Y9O2fOnNlZWVn+lZWVDjqdzikoKCjDPN/d3b3AwcGh0vzeyclJ\np9VqnW/dutXCaDTKlEqlxjzP29v7StV1/+Mf/3hr1apVU65evdpGIpEIxcXFrlWHbBQKRZ759dWr\nV9s0a9as0NHRscw8rW3btpc1Go2ypu1cvnx57MGDB/umpKSEmqfl5ub6PP/88z9XzSyTyYw3btxo\n1bp162u17buq8vLyFL6+vpeqT79161YLnU7n1L179xPmaYIgSCorK/8Yhq1pv93vcy5fvtzWvP3m\naSaTSdq3b9+D5vdV9xXZB47pU5288MIL3ycnJ4ddvny5rUQiEWbOnLmwahEC7o1Ljxw5cvM777yz\n6ObNmy0LCwubDRkyZKdgxWWRLVq0uCWTyYxXrlzxNk+r+jo5OTns008/ffvHH38cXVRU9ERhYWEz\nNze3u1XXXfVKnNatW18rLCxsptPpnMzTzNnv9/nJyclhH3300dyEhIThzs7OWvN0b2/vK4mJiYML\nCwubmZtOp3Oqa8EHAKVSqal+ngIAPDw8bjs6OpZlZmZ2NH9GUVHRE8XFxa7WrLf6Nnl7e19p165d\nTtXMxcXFrtu3bx9q7v9nuGqJ6oZFn6x24cKF9vv37x9QUVHRuHHjxhVNmjQpl0qlplatWt3Izc31\n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\ndclfWFj4RMeOHc9oNBqFINwromLnrkv+2bNnx7377rvzzdmbN29eYDAYZGJnFwQBBw8eDEtLSwuu\nqWg+zt9da/Lb8t2t98cwbN26NXLSpElrAGDSpElrtmzZElW9j6en5/WuXbueBABnZ2dtYGDg2atX\nr7ap76yAdfcqVN2m0NDQlKKioidu3LjRSoy81T3IvRaPA2vyA/eGEkeNGrWpRYsWt8TIWRNr8n/3\n3XfjRo4cudl8kYSHh8dtcdL+L2vyt27d+lpxcbErABQXF7u6u7sXyGQyoziJ/6+wsLBk88Ul9/M4\nf3eB2vPb8t2t96J/48aNVq1atboBAK1atbpR2w7Ozc31SU9PDw4NDU2pn4T/V35+vpdSqdSY3ysU\nirz8/Hyv2vo8LoXTmvxVrVy5MmbIkCE76ydd7azd/wkJCcPN55Xqcqnxo2ZN/qysLP87d+4079+/\n/4GQkJDj69atm1D/Se/PmvzTpk37+syZM53atGlzVa1Wn1qyZMnr9Z/UNo/zd7eurP3uWjyRa6tn\nnnlm7/Xr1z2rT//73//+ftX3EolEsPQF1Wq1zqNGjdq0ZMmS152dnbWPImttrC0gQrV7Dh6XwvMg\n91o8DqzJb74HRCKRCIIgSKr/txCTNfkNBoM8LS2t2y+//PK0Tqdz6t2795FevXod9ff3z6qPjJZY\nk3/evHnvde3a9WRSUlJ4dna26plnntl76tQptYuLS0l9ZHxQj+t3ty7q8t19JEV/7969z9Q0r1Wr\nVjeuX7/u6enpef3atWutW7ZsefN+/QwGg3zkyJGbX3zxxfVRUVFbHkVOa1hzr0L1Pnl5eQovL6/8\n+sxZk7rea5GYmDjY0v9O1jdr8p84caJ7dHR0PADcvn3bY9euXc/K5XJD9cuLxWBNfqVSqfHw8Ljt\n6OhY5ujoWNa3b9+Dp06dUj8ORd+a/IcPH+7z/vvv/x0AVCpVdrt27XLOnz/fISQk5Hh9562rx/m7\na606f3fr+8TE22+/vch8BcD8+fPfvd+J3MrKSsmECRPWzpgx4wuxT6QYDAaZr69vdk5Ojk9FRUWj\n2k7kHjlypNfjdDLImvyXL1/2VqlUF48cOdJL7Ly25K/aJk+evPpxunrHmvxnz54NePrpp/cZjUZp\naWmpU+fOnX87c+ZMR7GzW5v/jTfe+DwuLm62IAi4fv16Ky8vr7yCgoLmYmc3t5ycHB9rTuQ+bt9d\na/Lb8t2t9w0oKCho/vTTT++rfslmfn5+myFDhuwQBAHJyclPSSSSSrVafbJr167pXbt2Td+1a9dg\nsXb6zp07n23fvv15lUp1cd68ebMEQcBXX30V+9VXX8Wa+7z66qvLVCrVxaCgoFMnTpzoJvY/lLrk\nj4mJ+aZ58+YF5n3do0ePVLEz13X/m9vjVvStzf/pp5++1bFjxzOdO3f+TexLlOua/9atWx5Dhw7d\nFhQUdKpz586/bdiwYZzYmc0tOjr6+9atW1+Vy+V6hUKhWbly5ZSG9N2tLb8t312JIDS44SsiIrIR\nfzmLiMiOsOgTEdkRFn0iIjvCok9EZEdY9ImI7AiLPhGRHfn/NyLr/De23MIAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108157490>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108112b50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pca__k</th>\n",
       "      <th>rf__max_depth</th>\n",
       "      <th>rf__min_rows</th>\n",
       "      <th>rf__ntrees</th>\n",
       "      <th>score</th>\n",
       "      <th>standardize__center</th>\n",
       "      <th>standardize__scale</th>\n",
       "      <th>std</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>5</td>\n",
       "      <td>69</td>\n",
       "      <td>0.376312</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0.087629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>5</td>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>51</td>\n",
       "      <td>0.370140</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0.095910</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>8</td>\n",
       "      <td>69</td>\n",
       "      <td>0.363435</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0.103074</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>5</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>71</td>\n",
       "      <td>0.360376</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0.109905</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>3</td>\n",
       "      <td>9</td>\n",
       "      <td>6</td>\n",
       "      <td>52</td>\n",
       "      <td>0.358997</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>0.118261</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    pca__k  rf__max_depth  rf__min_rows  rf__ntrees     score  \\\n",
       "18       5              8             5          69  0.376312   \n",
       "10       5              8             6          51  0.370140   \n",
       "8        5              9             8          69  0.363435   \n",
       "17       5              6             5          71  0.360376   \n",
       "9        3              9             6          52  0.358997   \n",
       "\n",
       "   standardize__center standardize__scale       std  \n",
       "18               False               True  0.087629  \n",
       "10               False               True  0.095910  \n",
       "8                False              False  0.103074  \n",
       "17               False               True  0.109905  \n",
       "9                False               True  0.118261  "
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipe = Pipeline([(\"standardize\", H2OScaler()),\n",
    "                 (\"pca\", H2OPCA()),\n",
    "                 (\"rf\", H2ORandomForestEstimator(seed=42))])\n",
    "\n",
    "params = {\"standardize__center\":    [True, False],           # Parameters to test\n",
    "          \"standardize__scale\":     [True, False],\n",
    "          \"pca__k\":                 randint(2, 6),\n",
    "          \"rf__ntrees\":             randint(10,20),\n",
    "          \"rf__max_depth\":          randint(4,10),\n",
    "          \"rf__min_rows\":           randint(5,10), }\n",
    "#           \"rf__mtries\":             randint(1,4),}           # gridding over mtries is \n",
    "                                                               # problematic with pca grid over \n",
    "                                                               # k above \n",
    "\n",
    "from sklearn.model_selection import RandomizedSearchCV\n",
    "from h2o.cross_validation import H2OKFold\n",
    "from h2o.model.regression import h2o_r2_score\n",
    "from sklearn.metrics.scorer import make_scorer\n",
    "\n",
    "custom_cv = H2OKFold(fr, n_folds=5, seed=42)\n",
    "random_search = RandomizedSearchCV(pipe, params,\n",
    "                                   n_iter=5,\n",
    "                                   scoring=make_scorer(h2o_r2_score),\n",
    "                                   cv=custom_cv,\n",
    "                                   random_state=42,\n",
    "                                   n_jobs=1)\n",
    "\n",
    "\n",
    "random_search.fit(fr[x],fr[y])\n",
    "results = report_grid_score_detail(random_search)\n",
    "results.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Currently Under Development (drop-in scikit-learn pieces):\n",
    "    * Richer set of transforms (only PCA and Scale are implemented)\n",
    "    * Richer set of estimators (only RandomForest is available)\n",
    "    * Full H2O Grid Search"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Other Tips: Model Save/Load"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It is useful to save constructed models to disk and reload them between H2O sessions. Here's how:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "best_estimator = random_search.best_estimator_                        # fetch the pipeline from the grid search\n",
    "h2o_model      = h2o.get_model(best_estimator._final_estimator._id)    # fetch the model from the pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/Users/ludirehak/h2o-3/DRF_model_python_1446227466951_6362\n"
     ]
    }
   ],
   "source": [
    "save_path = h2o.save_model(h2o_model, path=\".\", force=True)\n",
    "print(save_path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# assumes new session\n",
    "my_model = h2o.load_model(path=save_path)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table>\n",
       "<tr><th style=\"text-align: right;\">  predict</th></tr>\n",
       "<tr><td style=\"text-align: right;\">  21.1277</td></tr>\n",
       "<tr><td style=\"text-align: right;\">  17.681 </td></tr>\n",
       "<tr><td style=\"text-align: right;\">  21.0579</td></tr>\n",
       "<tr><td style=\"text-align: right;\">  22.335 </td></tr>\n",
       "<tr><td style=\"text-align: right;\">  22.0658</td></tr>\n",
       "<tr><td style=\"text-align: right;\">  21.6363</td></tr>\n",
       "<tr><td style=\"text-align: right;\">  22.0799</td></tr>\n",
       "<tr><td style=\"text-align: right;\">  21.4214</td></tr>\n",
       "<tr><td style=\"text-align: right;\">  21.6735</td></tr>\n",
       "<tr><td style=\"text-align: right;\">  22.1625</td></tr>\n",
       "</table>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": []
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_model.predict(X_test_norm_pca)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
